UPDATE FIXED 1/18/15
После того, как мы недавно обновились до MySQL 5.6.27 (из репо Ubuntu), этот параметр теперь работает. Таким образом, это, похоже, было проблемой с предыдущей версией MySQL.
ОРИГИНАЛЬНЫЙ ВОПРОС
С новым обновлением до MySQL (5.6.20) обновления и вставки завершаются с ошибкой, если я не установил sql-mode в NO_ENGINE_SUSSTITUTION.
Благодаря документации я могу запустить следующее из терминала mysql и устранить проблему (временно):
SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';`
Но в следующий раз, когда MySQL перезагрузится, эти настройки будут потеряны.
Итак, я попытался сделать это постоянным, отредактировав /etc/mysql/my.cnf(на моем стандартном сервере под управлением Ubuntu 12.04.5 LTS) и добавив настройки конфигурации, которые документация должна быть добавлена:
[mysqld]
sql-mode="NO_ENGINE_SUBSTITUTION"
Альтернативные синтаксисы для тестирования
Просто для тестирования я также пробовал следующие форматы (которые не вызывают ошибок при перезапуске MySQL, но они не влияют на настройку).
# dash no quotes
sql-mode=NO_ENGINE_SUBSTITUTION
# underscore no quotes
sql_mode=NO_ENGINE_SUBSTITUTION
# underscore and quotes
sql_mode="NO_ENGINE_SUBSTITUTION"
Ничего не работает. После перезапуска этот параметр будет потерян, и я снова должен выполнить команды вручную с терминала mysql, чтобы снова выполнить сохранение.
Альтернативные расположения
- Я знаю, что /etc/mysql/my.cnf ссылается, потому что у нас есть репликация, определенная в этом файле, и это работает.
- В этом файле нет другой идентичной настройки, которая перезаписывает его.
Я получаю список файлов конфигурации, на которые ссылаются, запустив это из командной строки:
mysqld --help --verbose
Я вижу строку, которая гласит:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
Это местоположение по умолчанию, которое "смотрит" на файлы, это не означает, что он действительно нашел там файл, например. мой сервер не имеет /etc/my.cnf
, /usr/etc/my.cnf
или ~/.my.cnf
.
Итак, похоже, что моя конфигурация в файле /etc/mysql/my.cnf является единственным файлом, на который ссылается mysql, и поэтому этот параметр не перезаписывается.
Логическое заключение тестирования
Логически тогда кажется, что синтаксис неверен или игнорируется по какой-то другой причине. Любые другие идеи?