IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]MySQL: Couldn\'t execute \'SET OPTION SQL_QUOTE_SHOW_CREATE=1\':问题

    mchdba发表于 2017-05-23 10:04:24
    love 0

    执行mysqldump报错

    [root@t91~]# mysqldump -d --socket=/usr/local/mysql/mysql.sock orcl_db >orcl_db.sql
    mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=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 'OPTION SQL_QUOTE_SHOW_CREATE=1' at line 1 (1064)
    [root@t91~]# 


    看到报错信息,有说MySQL server version for the right syntax to user ….,猜测可能是工具的版本问题导致的,所以需要check
    查看mysqldump版本和路径

    [root@t91~]# mysqldump --version
    mysqldump  Ver 10.13 Distrib 5.1.66, for redhat-linux-gnu (x86_64)
    [root@t91~]# 
    [root@t91~]# type mysqldump
    mysqldump is hashed (/usr/bin/mysqldump)
    [root@t91~]# 


    再查看mysql版本是5.6.12

    [root@t91~]# mysql --version
    Warning: Using a password on the command line interface can be insecure.
    /usr/local/mysql/bin/mysql  Ver 14.14 Distrib 5.6.12, for Linux (x86_64) using  EditLine wrapper
    [root@t91~]# 
    [root@t91~]# type mysql
    mysql is aliased to `/usr/local/mysql/bin/mysql -uroot --password= -S /usr/local/mysql/mysql.sock'
    [root@t91~]# 



    看到问题所在了,mysqldump的版本和数据库的版本不一致,/usr/bin下面的是5.1.66,/usr/local/mysql/bin/下面的是5.6.12的版本。mysql能连接到5.6.12版本的是因为做了alias映射的关系,mysqldump没有做映射,那为啥会出现这个问题呢?看环境变量里面的配置

    [root@t91~]# more /etc/profile |grep mysql
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
    [root@t91~]# 


    看到了有加载/usr/bin; 和 /usr/local/mysql/bin;
    /usr/bin;在/usr/local/mysql/bin;的前面进行加载,所以生效的是/usr/bin下面的mysqldump。



    所以解决问题的办法有如下几种:
    (1)将/usr/bin;放在/usr/local/mysql/bin;后面,重新登陆
    (2)删除/usr/bin下面的老版本的MySQL,执行命令rm -rf /usr/bin/mysql*

    这里采取的是第一种办法,因为不知道这个老的mysql版本是否会被别的应用使用,暂时为了快速解决问题,自动加载新版本/usr/local/mysql/bin

    [root@t91~]# more /etc/profile |grep mysql
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/root/bin:/usr/local/mysql/bin:/usr/bin
    [root@t91~]# 


    修改完配置后,重新登陆,查看配置,再查看mysqldump的路径,然后执行mysqldump操作,一切OK,如下所示:

    [root@t91~]# more /etc/profile |grep mysql
    export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/root/bin:/usr/local/mysql/bin:/usr/bin
    [root@t91~]# 
    [root@t91~]# type mysqldump
    mysqldump is /usr/local/mysql/bin/mysqldump
    [root@t91~]# mysqldump -d --socket=/usr/local/mysql/mysql.sock orcl_db >orcl_db.sql
    [root@t91~]# 


沪ICP备19023445号-2号
友情链接