命令:gunzip -c a.sql.gz | mysql -u user -p databasename
a.sql中是创建表的语句,单独执行无问题。
执行上面命令后,显示错误:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a.sql' at line 1
求高手指教。谢谢。mysql
a.sql中是创建表的语句,单独执行无问题。
执行上面命令后,显示错误:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a.sql' at line 1
求高手指教。谢谢。mysql
谢谢ACMAIN_CHM。已在问题中写明“a.sql中是创建表的语句,单独执行无问题。”已多次检查,第一行无语法错误,且尝试了更改第一行代码为其他insert等语句,依然报同样的错误。
谢谢Wentasy。
a.sql中是create table,insert into语句。a.sql是压缩到a.sql.gz中的。
执行的导入文件到数据库的命令是:
gunzip -c a.sql.gz | mysql -u user -p databasename
这条命令本身应该无问题,mysql的书籍上也有这条命令,但我执行报错。
mysql -u user -p databasename < a.sql
是什么结果?
修正一下就行了。很好排查的。
gunzip < a.sql.gz | mysql -uuser -p databasename
谢谢ACMAIN_CHM。已在问题中写明“a.sql中是创建表的语句,单独执行无问题。”已多次检查,第一行无语法错误,且尝试了更改第一行代码为其他insert等语句,依然报同样的错误。肯定是语法错误啊 你手动gunzip下那个文件 然后打开复制了sql语句去手动执行下 肯定报错
谢谢ACMAIN_CHM。已在问题中写明“a.sql中是创建表的语句,单独执行无问题。”已多次检查,第一行无语法错误,且尝试了更改第一行代码为其他insert等语句,依然报同样的错误。肯定是语法错误啊 你手动gunzip下那个文件 然后打开复制了sql语句去手动执行下 肯定报错我再说最后一遍,sql无问题!!!
sql是没有问题的,特别试了多次的,直接执行无任何问题。
现在怀疑和编码有关系。晚上继续研究。
谢谢wwwwb,这条命令的<和-c是同一个意思。我也试过这种方式,依然是同样的问题。
现在怀疑和编码有关系,就是压缩文件的编码和数据库的编码对应不上。晚上在研究。
谢谢iihero,使用过这种方式的,sql可以正确执行的。mysql的错误提示智能点明确点就好了。比如说sql有问题,那就定位到有问题的位置啊,只说第1行,第1行没问题啊。
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a.sql' at line 1提示说在"a.sql"附近有语法错误,gunzip -c a.sql.gz的输出里肯定包含了这五个字符,你的这个SQL文件里真的包含这五个字符么 或者是你的输出有问题?
谢谢wwwwb,这条命令的<和-c是同一个意思。我也试过这种方式,依然是同样的问题。
现在怀疑和编码有关系,就是压缩文件的编码和数据库的编码对应不上。晚上在研究。
呵呵,也基本上可以断定是因为这个原因。
tar -zxvf a.sql.gz -O | mysql -uuser -ppassword databasename --default-character-set=utf8
那个是-O,OPQ的O,不是0123的0。
utf8是压缩包文件的编码,数据库的编码是gbk。
谢谢大家