Lorsque vous essayez de lancer MySQL à partir du terminal à l'aide de mysql -u <username> -p<password>
J'obtiens l'erreur suivante:
mysql: [ERREUR] variable inconnue 'sql_mode = STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION'
Parmi les trois emplacements possibles que MySQL recherche pour le fichier .cnf (les a trouvés en exécutant Sudo /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
), seulement /etc/mysql/my.cnf
existe. Il n'y a qu'un répertoire contenant !includedir /etc/mysql/conf.d/
. La bride /etc/mysql/conf.d/mysql.cnf
il y a les lignes suivantes:
[mysql]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
J'ai cherché des réponses, je n'en ai pas trouvé. Essayé, un par un, d'exclure un "mauvais mode" spécifique de la liste des modes, ils ne sont pas tous reconnus.
Ce n'est qu'en commentant complètement cette ligne que j'ai pu me connecter et lancer MySQL.
Quelqu'un sait-il quel pourrait être le problème?
Aspects de la plateforme et du système d'exploitation:
Votre problème est très simple
Vous avez ce qui suit
[mysql]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
sql_mode n'est pas une option du client mysql. C'est pourquoi le message d'erreur est unknown variable
.
Notez comment sql_mode
et sql-mode
n'apparaissent pas dans les options du client mysql:
$ mysql --help | grep mode
Automatically switch to vertical output mode if the
work in batch mode. Disable with --disable-pager. This
--ssl-mode=name SSL connection mode.
--ssl Deprecated. Use --ssl-mode instead.
Deprecated. Use --ssl-mode=VERIFY_IDENTITY instead.
also. Does not work in batch mode. Disable with
--binary-mode By default, ASCII '\0' is disallowed and '\r\n' is
\C and DELIMITER, in non-interactive mode (for input
expired password sandbox mode.
binary-mode FALSE
sql_mode est une option pour mysqld.
Changez simplement l'en-tête de groupe en [mysqld]
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Vous n'avez pas besoin de redémarrer mysql. Connectez-vous et lancez
mysql> SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';