使用gunzip恢复备份文件报错

梦百川 2013-10-15 08:04:48
命令: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
求高手指教。谢谢。
...全文
324 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
梦百川 2013-10-17
  • 打赏
  • 举报
回复
需要特别说的是gunzip解压看a.sql,里面的语句是完全无问题的,完全可以拿到数据库中直接执行的。
梦百川 2013-10-17
  • 打赏
  • 举报
回复
问题已解决,是编码问题,最后执行的命令为: tar -zxvf a.sql.gz -O | mysql -uuser -ppassword databasename --default-character-set=utf8 那个是-O,OPQ的O,不是0123的0。 utf8是压缩包文件的编码,数据库的编码是gbk。 谢谢大家
rucypli 2013-10-16
  • 打赏
  • 举报
回复
引用 2 楼 shijiedemuguang 的回复:
[quote=引用 1 楼 ACMAIN_CHM 的回复:] gunzip -c a.sql.gz 看一下第一行到底是什么。应该有语法错误。
谢谢ACMAIN_CHM。已在问题中写明“a.sql中是创建表的语句,单独执行无问题。”已多次检查,第一行无语法错误,且尝试了更改第一行代码为其他insert等语句,依然报同样的错误。[/quote] 肯定是语法错误啊 你手动gunzip下那个文件 然后打开复制了sql语句去手动执行下 肯定报错
wwwwb 2013-10-16
  • 打赏
  • 举报
回复
这样试试 gunzip < a.sql.gz | mysql -uuser -p databasename
iihero_ 2013-10-16
  • 打赏
  • 举报
回复
手动解开a.sql, 执行: mysql -u user -p databasename < a.sql 是什么结果? 修正一下就行了。很好排查的。
梦百川 2013-10-16
  • 打赏
  • 举报
回复
引用 3 楼 Wentasy 的回复:
恢复备份文件不就是导入数据库吗?a.sql有导入语句?
谢谢Wentasy。 a.sql中是create table,insert into语句。a.sql是压缩到a.sql.gz中的。 执行的导入文件到数据库的命令是: gunzip -c a.sql.gz | mysql -u user -p databasename 这条命令本身应该无问题,mysql的书籍上也有这条命令,但我执行报错。
iihero_ 2013-10-16
  • 打赏
  • 举报
回复
引用 9 楼 shijiedemuguang 的回复:
[quote=引用 6 楼 wwwwb 的回复:] 这样试试 gunzip < a.sql.gz | mysql -uuser -p databasename
谢谢wwwwb,这条命令的<和-c是同一个意思。我也试过这种方式,依然是同样的问题。 现在怀疑和编码有关系,就是压缩文件的编码和数据库的编码对应不上。晚上在研究。 [/quote] 呵呵,也基本上可以断定是因为这个原因。
liuxinran819 2013-10-16
  • 打赏
  • 举报
回复
不对! 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文件里真的包含这五个字符么 或者是你的输出有问题?
liuxinran819 2013-10-16
  • 打赏
  • 举报
回复
可能是编码问题 先确定gunzip -c a.sql.gz输出内容的编码是什么
vipper23 2013-10-16
  • 打赏
  • 举报
回复
a.sql方便贴出来么?
梦百川 2013-10-16
  • 打赏
  • 举报
回复
引用 5 楼 iihero 的回复:
手动解开a.sql, 执行: mysql -u user -p databasename < a.sql 是什么结果? 修正一下就行了。很好排查的。
谢谢iihero,使用过这种方式的,sql可以正确执行的。mysql的错误提示智能点明确点就好了。比如说sql有问题,那就定位到有问题的位置啊,只说第1行,第1行没问题啊。
梦百川 2013-10-16
  • 打赏
  • 举报
回复
引用 6 楼 wwwwb 的回复:
这样试试 gunzip < a.sql.gz | mysql -uuser -p databasename
谢谢wwwwb,这条命令的<和-c是同一个意思。我也试过这种方式,依然是同样的问题。 现在怀疑和编码有关系,就是压缩文件的编码和数据库的编码对应不上。晚上在研究。
梦百川 2013-10-16
  • 打赏
  • 举报
回复
引用 7 楼 rucypli 的回复:
[quote=引用 2 楼 shijiedemuguang 的回复:] [quote=引用 1 楼 ACMAIN_CHM 的回复:] gunzip -c a.sql.gz 看一下第一行到底是什么。应该有语法错误。
谢谢ACMAIN_CHM。已在问题中写明“a.sql中是创建表的语句,单独执行无问题。”已多次检查,第一行无语法错误,且尝试了更改第一行代码为其他insert等语句,依然报同样的错误。[/quote] 肯定是语法错误啊 你手动gunzip下那个文件 然后打开复制了sql语句去手动执行下 肯定报错[/quote] 我再说最后一遍,sql无问题!!! sql是没有问题的,特别试了多次的,直接执行无任何问题。 现在怀疑和编码有关系。晚上继续研究。
Wentasy 2013-10-15
  • 打赏
  • 举报
回复
恢复备份文件不就是导入数据库吗?a.sql有导入语句?
梦百川 2013-10-15
  • 打赏
  • 举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
gunzip -c a.sql.gz 看一下第一行到底是什么。应该有语法错误。
谢谢ACMAIN_CHM。已在问题中写明“a.sql中是创建表的语句,单独执行无问题。”已多次检查,第一行无语法错误,且尝试了更改第一行代码为其他insert等语句,依然报同样的错误。
ACMAIN_CHM 2013-10-15
  • 打赏
  • 举报
回复
gunzip -c a.sql.gz 看一下第一行到底是什么。应该有语法错误。

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧