Comment puis-je désactiver STRICT_TRANS_TABLES un Homebrew installé le serveur MySQL?

Il semble que MySQL récemment (5.6?) changé la valeur par défaut du mode SQL pour être plus restrictif. La nouvelle mode est "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION". J'aime le changement, mais au moins un site web que je maintiens ne le fait pas. INSÉRER des requêtes échouent parce qu'ils ne spécifiez pas de valeurs pour les colonnes qui n'ont pas de valeurs par défaut. Avant, MySQL serait en déduire les valeurs par défaut par type de colonne.

Pour l'instant, je veux désactiver STRICT_TRANS_TABLES. J'ai ajouté sql_mode=NO_ENGINE_SUBSTITUTION à my.cnf et redémarré le serveur, mais le strict paramètre persiste. Ce que je fais mal?

Version de MySQL:

$ mysqld --version
mysqld  Ver 5.6.15 for osx10.9 on x86_64 (Homebrew)

mon.cnf:

$ cat /etc/my.cnf
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

# not sure if this is needed but it doesn't seem to have an effect either way
[mysqld_safe]
sql_mode=NO_ENGINE_SUBSTITUTION

Confirmer que mysqld serait d'utiliser les paramètres de mon.cnf:

$ mysqld --print-defaults
mysqld would have been started with the following arguments:
--sql_mode=NO_ENGINE_SUBSTITUTION

Confirmer que mysqld n'est pas actuellement en cours d'exécution:

$ ps aux | grep mysql
metaphile        1022   0.0  0.0  2432784    600 s003  S+    3:10PM   0:00.00 grep mysql

Propriété de la liste fournie par Homebrew:

$ cat ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>KeepAlive</key>
  <true/>
  <key>Label</key>
  <string>homebrew.mxcl.mysql</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/opt/mysql/bin/mysqld_safe</string>
    <string>--bind-address=127.0.0.1</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key>
  <string>/usr/local/var</string>
</dict>
</plist>

Démarrer MySQL et vérifier le mode SQL:

$ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
$ mysql -uroot
...
mysql> SELECT @@GLOBAL.sql_mode, @@SESSION.sql_mode;
+--------------------------------------------+--------------------------------------------+
| @@GLOBAL.sql_mode                          | @@SESSION.sql_mode                         |
+--------------------------------------------+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+--------------------------------------------+
1 row in set (0.00 sec)

Argh!

OriginalL'auteur Metaphile | 2013-12-13