2013-05-10 3 views
6

Использование MySQL 5.5.27, в my.cnf у меня есть:Как исправить «неизвестную переменную» sql-mode = ANSI'`?

[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.

ответ

7

Я довольно определенная причина, по которой он не работает, потому что это аргумент для mysqld, а не для клиента. Я придумал альтернативный способ, которым вы могли бы это сделать. Редактировать пользователи my.cnf i.e. ~/.my.cnf быть что-то вроде этого:

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

Вы также можете перенести команду init в команду так, чтобы 'mysql --init-command =" установить sql_mode = 'TRADITIONAL' "'. Это позволит вам выполнять как псевдоним и без необходимости редактировать my.cnf. – cogsmos

+1

Спасибо. Это работает для клиента, который подключается, но не работает для сервера в целом ('[mysqld]' в my.cnf). – Zabba

+0

Должен быть скрипт, который запускает ваш mysqld-процесс где-то. Я не знаком с тем, как он будет запускаться на Mac, но в Linux это будет где-то в /etc/init.d/. Если вы можете найти скрипт, вы должны просто добавить в командной строке -sql-mode = XXX. – cogsmos

2

В конфигурационном файле вы должны использовать sql-mode имя вместо (с тиром, а не подчеркивание)

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

И как @cogsmos отметил, вы должны положить его [mysqld] раздела

+0

Пробовал это тоже, но он не работает. Такая же ошибка. Кроме того, переменная является «Variable Name sql_mode» из документов. 'sql-mode' должен использоваться, когда в строке комментария, например' mysql -sql-mode = ANSI' (который также не работает). – Zabba

+0

@Zabba: Это не переменная, это директива файла опций, таким образом: 'Опция-Формат файла \t sql-mode'. Он должен работать. Показать точную конфигурацию с помощью 'sql-mode' и точного сообщения об ошибке – zerkms

+0

Я попробовал, как вы сказали, и перезапустил сервер. Затем клиент подключился без ошибок. Но когда я запускаю UPDATE SQL, этот вариант, похоже, не имеет никакого эффекта, никаких идей? (Я пытаюсь обновить 300 символов в поле 255 var varchar и не вызывает никаких ошибок) – Zabba

12

sql-mode должны быть в разделе [mysqld], а не в разделе [mysql]. Если вы переместите sql-mode=ANSI в раздел [mysqld], он должен работать.

Смежные вопросы