2013-05-10 43 views

回答

7

我敢确定它不工作的原因是因为它是mysqld而不是客户端的参数。我想出了一种替代方式,您可以改为这样做。修改用户的my.cnf i.e. ~/.my.cnf是这样的:

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

您也可以将init-command移动到命令中,如'mysql --init-command =“set sql_mode ='TRADITIONAL'”'。这将允许你做一个别名,而不必编辑my.cnf。 – cogsmos 2013-05-10 04:55:53

+1

谢谢。这适用于连接的客户端,但不适用于整个服务器(my.cnf中的[mysqld])。 – Zabba 2013-05-10 05:02:02

+0

必须有一个脚本启动你的mysqld进程。我不熟悉它将如何在Mac上启动,但在Linux上它会在/etc/init.d/中的某处。如果你能找到脚本,你应该可以在命令行中添加--sql-mode = XXX。 – cogsmos 2013-05-13 05:02:57

2

在配置文件中,你应该使用sql-mode名称,而不是(与前围,没有下划线)

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

而作为@cogsmos指出,你应该把它[mysqld]部分

+0

试过了,但它不起作用。同样的错误。另外,该变量是来自文档的“变量名称sql_mode”。在注释行使用'sql-mode',比如'mysql --sql-mode = ANSI'(这也不起作用)。 – Zabba 2013-05-10 04:40:12

+0

@Zabba:它不是一个变量,它是一个选项文件指令,因此:'选项 - 文件格式\t sql-mode'。它应该工作。用'sql-mode'显示确切的配置,确切的错误信息 – zerkms 2013-05-10 04:41:53

+0

我按照你的说法试过,然后重新启动服务器。然后客户端连接没有错误。但是当我运行UPDATE SQL时,这个选项似乎没有任何作用,有什么想法? (我试图将300个字符更新为255个字符的varchar字段,并且不会引发任何错误) – Zabba 2013-05-10 05:00:05

12

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