grub-install安装grub时出错:/boot/grub/stage1 not read correctly.

在U盘上安装grub,之前是fat32的,格式化成exfat再安装grub,U盘设置文件为/dev/sdc4, 挂载于/media/c0f80392-62db-4156-a4f5-c64fc7515795/,但在运行grub-install时却出错了,如下:

[root@fsc feng]# grub-install --root-directory=/media/c0f80392-62db-4156-a4f5-c64fc7515795/ /dev/sdc4
The file /media/c0f80392-62db-4156-a4f5-c64fc7515795//boot/grub/stage1 not read correctly.

印象中以前都是这样安装grub的,检查没发现问题,于是google,说是/etc/fstab 里作过配置,刚才确实改过但没有重启机器,于是重启。再运行grub-install,还是照例出错,消息完全一样。于是继续google,啃英文文章,一时间没有找到方案。又尝试了N多其它方式:再次格式化U盘、直接拷/boot/grub 到U盘再grub-install等,都不行。

准备把U盘上分区重新删掉,重建分区再尝试。突然想到分区格式与分区表中不一致,使用“磁盘实用工具”查看时,该分区/dev/sdc4是w95 fat32(0x0b),删掉,再建ext2分区,设置为可启动(可以通过磁盘实用工具设置,或fdisk修改都可以),为/dev/sdc1,格式化为ext2,再次运行grub-install,成功

[root@fsc feng]# grub-install --root-directory=/media/287801d6-91aa-4563-a45e-d34073af2ff9 /dev/sdc1
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /media/287801d6-91aa-4563-a45e-d34073af2ff9/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0)    /dev/fd0
(hd0)    /dev/sda
(hd1)    /dev/sdb
(hd2)    /dev/sdc
[root@fsc feng]#

mysql数据库还原出错解决手记(Incorrect string value/ERROR:Unknown command '\\')

MySQL还原.sql备份格式的数据,有时会遇到错误,原因可能是字符集错误,经验上至少包括Incorrect string value 与 ERROR:Unknown command 这两个错误,可以考虑在导入脚本上加入 --default-character-set 参数指定.sql文件字符编码;特别的,如果包含表情符等字符的,最好使用 utf8mb4 而不是utf8。

一个具体案例,如下截图所示,

ERROR 1366 (22007) at line xx: Incorrect string value: '\xF0\x9F\x8C\xBF' for column xx at row x

备份文件包含了 create table 语句,实际还原时要忽略掉这部分,因此使用 sed过滤掉前面46行。原来以为这种错误行很少,加了--force参数忽略错误行而继续,但太多,于是Ctrl-c中止了。之后加上 --default-character-set=utf8mb4 参数,就顺便执行,没有错误。
-------------- 下面是多年前的老版本文件,仅为参考而保留 ---------------

使用mysql命令行客户端,使用source导入备份文件,但导入中出错,

ERROR:
Unknown command '\\'.
ERROR:
Unknown command '\''.
ERROR:
Unknown command '\\'.
ERROR:
Unknown command '\''.
ERROR:
Unknown command '\\'.
ERROR:
Unknown command '\''.
ERROR:
Unknown command '\\'.
ERROR:
Unknown command '\''.

并且直接出现win32程序错误的提示,mysql客户端自动退出。

上网查询有人说是编码问题,在连接服务器端时命令中指定编码,如下形式

>mysql -uroot -pxxxxxx --default-character-set=utf8

要还原的数据库本身是gbk编码,但备份文件是utf-8,于是在连接时指定为gbk,但导入中照样出错。于是改用utf-8,出上命令行所未,居然好了,完全导入成功,2G多的数据库。

看来mysql的字符编码问题还要多多了学习,有点深奥。

是为手记20110526

------ 后记 20110603-------------------

一定要在连接mysql时,使用--default-character-set=utf8 参数,而不是在连接后使用 set names utf8 ,经测试,这样不行的。