命令: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

解决方案 »

  1.   

    gunzip -c a.sql.gz看一下第一行到底是什么。应该有语法错误。
      

  2.   


    谢谢ACMAIN_CHM。已在问题中写明“a.sql中是创建表的语句,单独执行无问题。”已多次检查,第一行无语法错误,且尝试了更改第一行代码为其他insert等语句,依然报同样的错误。
      

  3.   

    恢复备份文件不就是导入数据库吗?a.sql有导入语句?
      

  4.   


    谢谢Wentasy。
    a.sql中是create table,insert into语句。a.sql是压缩到a.sql.gz中的。
    执行的导入文件到数据库的命令是:
    gunzip -c a.sql.gz | mysql -u user -p databasename
    这条命令本身应该无问题,mysql的书籍上也有这条命令,但我执行报错。
      

  5.   

    手动解开a.sql, 执行:
    mysql -u user -p databasename < a.sql
    是什么结果?
    修正一下就行了。很好排查的。
      

  6.   

    这样试试
    gunzip < a.sql.gz | mysql -uuser -p databasename
      

  7.   


    谢谢ACMAIN_CHM。已在问题中写明“a.sql中是创建表的语句,单独执行无问题。”已多次检查,第一行无语法错误,且尝试了更改第一行代码为其他insert等语句,依然报同样的错误。肯定是语法错误啊  你手动gunzip下那个文件  然后打开复制了sql语句去手动执行下 肯定报错
      

  8.   


    谢谢ACMAIN_CHM。已在问题中写明“a.sql中是创建表的语句,单独执行无问题。”已多次检查,第一行无语法错误,且尝试了更改第一行代码为其他insert等语句,依然报同样的错误。肯定是语法错误啊  你手动gunzip下那个文件  然后打开复制了sql语句去手动执行下 肯定报错我再说最后一遍,sql无问题!!!
    sql是没有问题的,特别试了多次的,直接执行无任何问题。
    现在怀疑和编码有关系。晚上继续研究。
      

  9.   


    谢谢wwwwb,这条命令的<和-c是同一个意思。我也试过这种方式,依然是同样的问题。
    现在怀疑和编码有关系,就是压缩文件的编码和数据库的编码对应不上。晚上在研究。
      

  10.   


    谢谢iihero,使用过这种方式的,sql可以正确执行的。mysql的错误提示智能点明确点就好了。比如说sql有问题,那就定位到有问题的位置啊,只说第1行,第1行没问题啊。
      

  11.   

    可能是编码问题 先确定gunzip -c a.sql.gz输出内容的编码是什么
      

  12.   

    不对!
    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文件里真的包含这五个字符么 或者是你的输出有问题?
      

  13.   


    谢谢wwwwb,这条命令的<和-c是同一个意思。我也试过这种方式,依然是同样的问题。
    现在怀疑和编码有关系,就是压缩文件的编码和数据库的编码对应不上。晚上在研究。

    呵呵,也基本上可以断定是因为这个原因。
      

  14.   

    问题已解决,是编码问题,最后执行的命令为:
    tar -zxvf a.sql.gz -O | mysql -uuser -ppassword databasename --default-character-set=utf8
    那个是-O,OPQ的O,不是0123的0。
    utf8是压缩包文件的编码,数据库的编码是gbk。
    谢谢大家
      

  15.   

    需要特别说的是gunzip解压看a.sql,里面的语句是完全无问题的,完全可以拿到数据库中直接执行的。