Je développe des applications Rails ici, mais si vous développez une application Web, vous saurez si vous obtenez cette erreur.
this is incompatible with sql_mode=only_full_group_by
Les détails du problème sont expliqués dans divers articles, veuillez donc lire les articles suivants. Cette fois, ** j'étais accro à l'idée de toucher MySQL 8.0 avec une sensation de 5,7.
$ mysql --version
mysql Ver 8.0.21 for Linux on x86_64 (MySQL Community Server - GPL)
Les paramètres de mysqld sont le contenu défini en se référant à l'article ci-dessus. Ensuite, l'erreur suivante s'est produite.
$ mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
$ sudo vi /etc/my.cnf
---
[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
---
$ systemctl restart mysqld.service
Failed to restart mysqld.service: The name org.freedesktop.PolicyKit1 was not provided by any .service files
$ sudo systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code)depuis l'arbre 2020-10-22 03:50:33 UTC; 27s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 8909 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS (code=exited, status=1/FAILURE)
Process: 8885 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 8909 (code=exited, status=1/FAILURE)
Status: "Server startup in progress"
Error: 2 (No such file or directory)
22 octobre 03:50:32 xxx-xxx-xxx-xxx.yyyyy.zzz systemd[1]: Starting MySQL Server...
22 octobre 03:50:33 xxx-xxx-xxx-xxx.yyyyy.zzz systemd[1]: mysqld.service: main process exited, code=exited, status=1/FAILURE
22 octobre 03:50:33 xxx-xxx-xxx-xxx.yyyyy.zzz systemd[1]: Failed to start MySQL Server.
22 octobre 03:50:33 xxx-xxx-xxx-xxx.yyyyy.zzz systemd[1]: Unit mysqld.service entered failed state.
22 octobre 03:50:33 xxx-xxx-xxx-xxx.yyyyy.zzz systemd[1]: mysqld.service failed.
$ sudo less /var/log/mysqld.log
...
2020-10-22T03:50:33.416784Z 0 [ERROR] [MY-000077] [Server] /usr/sbin/mysqld: Error while setting value 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode'.
2020-10-22T03:50:33.416979Z 0 [ERROR] [MY-010119] [Server] Aborting
Le MySQL que j'utilisais était 8.0 et cela n'avait aucun sens. C'était un problème causé par son utilisation avec une sensation de 5.7.
Dans MySQL 8.0, le contenu de sql_mode
a été partiellement modifié par rapport à 5.7, et cette fois, j'étais accro au fait que NO_AUTO_CREATE_USER
avait été supprimé.
Avec les paramètres suivants avec NO_AUTO_CREATE_USER
supprimé, MySQL a démarré avec succès et l'erreur de présentation a été résolue.
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Recommended Posts