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
Vous devez vous connecter pour publier un commentaire.
Sur Centos 6.5, j'ai dû modifier
/usr/my.cnf
et (même si
/etc/my.cnf
existé et les fixations ont été définies ilgrand, /usr/ma.cnf remplacer /etc/my.cfn paramètres STRICT_TRANS_TABLES
Travaillé un charme pour moi. Merci!!!!
OriginalL'auteur vd1008
@ssnobody de la réponse qui m'a incité à la recherche de l'ensemble de mon système pour mon.cnf de fichiers. J'avais déjà repéré les emplacements indiqués par
mysqld --help --verbose
. Il s'avère que mon serveur est à l'aide de/usr/local/Cellar/mysql/5.6.15/my.cnf
qui j'ai eu tort d'être un exemple de fichier. Le fichier n'est pas un lien symbolique à partir de la norme endroits, y compris/usr/local/mysql
.Quelqu'un peut-il éclairer sur ce point? Est-il un Homebrew chose? Comment pourrais-je avoir compris cela, sauf en faisant tester des modifications à tous les mon.cnf que j'ai pu trouver?
strace -f -e trace=open mysql 2>&1 | grep -i cnf
pourrait également voir qui cnf fichier mysql a été à l'aide.SI vous utilisez l'infusion, il suffit de taper brasser de la liste de mysql. Il donnera la liste de toutes les options du fichier de configuration de mysql
OriginalL'auteur Metaphile
Veuillez vérifier
/usr/local/mysql/my.cnf
et commentez la problématique de réglage.Source: MySQL en Mode Strict sur OS X
OriginalL'auteur ssnobody
Simplement désactiver la STRICT_TRANS_TABLES pour un script spécifique,
lors de l'initialisation de votre db gérer dans votre script. Qui sera également désactiver NO_ENGINE_SUBSTITUTION, il suffit donc de
laissera que intacts.
OriginalL'auteur Will
Vous devez modifier:
et définir
OriginalL'auteur Yan Ouellet