mysql在导入的时候显示Unknown command '\''错误,
这个有些时候是由于导出端和导入端的字符集不同导致的。
解决方案:在导出的时候添加和默认字符集.
mysqldump -p dbname --default-character-set=GBK > db.sql
下面讲价一下mysqldump的相关参数:
内容摘自叶金荣的http://imysql.cn/mysql_backup_and_recover
--default-character-set=charset
指定导出数据时采用何种字符集,如果数据表不是采用默认的 latin1
字符集的话,那么导出时必须指定该选项,否则再次导入数据后将产生乱码问题。
--lock-all-tables,-x
在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 --single-transaction
和 --lock-tables
选项。
--no-data,-d
不导出任何数据,只导出数据库表结构。
--no-create-info,-t
只导出数据,而不添加 CREATE TABLE
语句。
--quick,-q
该选项在导出大表时很有用,它强制 mysqldump
从服务器查询取得记录直接输出而不是取得所有记录后将它们缓存到内存中。
--single-transaction
该选项在导出数据之前提交一个 BEGIN
SQL语句,BEGIN
不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB
和 BDB
。
本选项和 --lock-tables
选项是互斥的,因为 LOCK TABLES
会使任何挂起的事务隐含提交。
要想导出大表的话,应结合使用 --quick
选项。
通常使用以下 SQL 来备份 MyISAM
表:
/usr/local/mysql/bin/mysqldump -uyejr -pyejr \
--default-character-set=utf8 --opt --extended-insert=false \
--triggers -R --hex-blob -x db_name > db_name.sql
使用以下 SQL 来备份 Innodb
表:
/usr/local/mysql/bin/mysqldump -uyejr -pyejr \ --default-character-set=utf8 --opt --extended-insert=false \ --triggers -R --hex-blob --single-transaction db_name > db_name.sql
转载于:https://blog.51cto.com/chenchao40322/407699