Après la mise à niveau de MySQL de 5.5 vers 5.6, certaines de nos applications sont confrontées au problème et doivent définir sql_mode sur blanc pour résoudre ce problème. J'ai ajouté sql_mode = ''
à my.cnf
mais il n'y a eu aucun effet sur le paramètre mysql.
Comment garder le sql_mode vide?
Quelqu'un m'a demandé la même chose dans mon organisation parce que tout le monde utilisait MySQL 5.5. Tous les serveurs DB ont été mis à niveau au cours des 8 derniers mois vers MySQL 5.6. Certaines applications clientes étaient affectées par sql_mode
changer aussi.
Je viens de découvrir pourquoi ce que vous avez fait ne fonctionne pas et la solution de contournement est très simple.
Selon MySQL 5.5 Documentation, sql_mode default is a blank sting .
Selon MySQL 5.6 Documentation , sql_mode est par défaut est
NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
en 5.6.6 et en GAOK, j'espère que vous vous asseyez.
C'est la manière paresseuse qu'Oracle a implémentée sql_mode dans MySQL 5.6: Il y a un my.cnf
fichier.
Si vous courez
cat /usr/my.cnf
vous verrez ce qui suit
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Voir la ligne 28?
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
ÉTAPE 01 : commentez la ligne 28 de /usr/my.cnf
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
ÉTAPE 02 : Réglez sql_mode à la main
mysql> SET GLOBAL sql_mode = '';
C'EST CELA !!!
STEP 01
empêche les redémarrages de mysqld de changer sql_mode .STEP 02
définit sql_mode maintenant, donc le redémarrage de mysqld n'est pas nécessaire immédiatementAvec 5.7.13 (et éventuellement d'autres variantes de 5.7), l'astuce suivante fonctionne:
dans my.cnf
:
sql_mode=ALLOW_INVALID_DATES
et redémarrez le serveur. Si vous ne souhaitez pas redémarrer, vous pouvez simplement faire:
set global sql_mode='ALLOW_INVALID_DATES'
puis mysqld
oublie toutes ses valeurs par défaut pédantes et se comporte comme la configuration par défaut 5.5.