【问题标题】:How to fix `unknown variable 'sql-mode=ANSI'`?如何修复`未知变量'sql-mode = ANSI'`?
【发布时间】:2013-05-04 17:11:50
【问题描述】:

使用 MySQL 5.5.27,在 my.cnf 我有:

[mysql]
sql_mode=ANSI

启动 mysql 控制台后,我得到:

unknown variable 'sql-mode=TRADITIONAL'

MySQL 文档Server SQL Modes 显示了该选项,为什么它不起作用?

(如果有帮助,我在 OSX Lion)

另外,here is a pastebin showing the things another person has tried, with no solution

【问题讨论】:

    标签: mysql


    【解决方案1】:

    sql-mode 应该在 [mysqld] 部分中,而不是在 [mysql] 部分中。如果您将sql-mode=ANSI 移动到[mysqld] 部分,它应该可以工作。

    【讨论】:

    • 你先生是个传奇。谢谢
    【解决方案2】:

    在配置文件中,您应该使用sql-mode 名称(带有破折号,而不是下划线)

    http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_sql-mode

    正如@cogsmos 指出的,你应该把它放在[mysqld] 部分

    【讨论】:

    • 也试过了,还是不行。同样的错误。此外,该变量是来自文档的Variable Name sql_modesql-mode 用于注释行,例如mysql --sql-mode=ANSI(也不起作用)。
    • @Zabba:这不是变量,它是选项文件指令,因此:Option-File Format sql-mode。它应该工作。使用sql-mode 显示确切的配置和确切的错误消息
    • 我按照你说的试过了,重启了服务器。然后客户端连接没有错误。但是当我运行 UPDATE SQL 时,该选项似乎没有效果,有什么想法吗? (我正在尝试将 300 个字符更新为 255 个字符的 varchar 字段并且它不会引发任何错误)
    • @Zabba: SELECT @@GLOBAL.sql_mode; SELECT @@SESSION.sql_mode;
    • 返回了 1 行,但值是“空白”,即没有“NULL”或任何其他值应该是的文本(对于两者)。
    【解决方案3】:

    我很确定它不起作用的原因是因为它是 mysqld 而不是客户端的参数。我想出了一种替代方法,您可以这样做。编辑你的用户 my.cnf i.e. ~/.my.cnf 是这样的:

    [client]
    init-command="set sql_mode='TRADITIONAL'"
    

    【讨论】:

    • 你也可以像mysql --init-command="set sql_mode='TRADITIONAL'"那样将init-command移动到命令中。这将允许您以别名的身份进行操作,而无需编辑 my.cnf。
    • 谢谢。这适用于正在连接的客户端,但不适用于整个服务器(my.cnf 中的[mysqld])。
    • 必须有一个脚本在某个地方启动你的 mysqld 进程。我不熟悉它将如何在 Mac 上启动,但在 Linux 上它会在 /etc/init.d/ 中的某个位置。如果你能找到脚本,你应该能够将 --sql-mode=XXX 添加到命令行。
    • 如果我添加这个并尝试mysql -e "select @@sql_mode",我会得到一个错误:mysql: unknown variable 'init-command=set sql_mode='TRADITIONAL''
    • 或者,您可以在mysqld 部分中设置此命令,例如 [mysql] sql_mode=TRADITIONAL
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2021-09-20
    • 1970-01-01
    • 2017-08-30
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多