我从 ubuntu 18.04 升级到了 20.04,现在我的 mysql 无法正常工作。我记得在从 mysql 5.7 升级到 mysql 8.0 的过程中提到了一些注意事项;我记不太清楚了。
现在,我无法安装 mysql。这是我得到的结果:
maan@maan-Inspiron-5537:~$ sudo apt install mysql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
mysql-server is already the newest version (8.0.23-0ubuntu0.20.04.1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n]
Setting up mysql-server-8.0 (8.0.23-0ubuntu0.20.04.1) ...
Renaming removed key_buffer and myisam-recover options (if present)
ERROR: Unable to start MySQL server:
2021-02-08T08:39:12.431863Z 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'.
2021-02-08T08:39:12.493831Z 0 [ERROR] [MY-010119] [Server] Aborting
Please take a look at https://wiki.debian.org/Teams/MySQL/FAQ for tips on fixing common upgrade issues.
Once the problem is resolved, run apt-get --fix-broken install to retry.
dpkg: error processing package mysql-server-8.0 (--configure):
installed mysql-server-8.0 package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
mysql-server depends on mysql-server-8.0; however:
Package mysql-server-8.0 is not configured yet.
dpkg: error processing package mysql-server (--configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
Errors were encountered while processing:
mysql-server-8.0
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
maan@maan-Inspiron-5537:~$
我不想删除现有的数据库。
有出路吗 ?
答案1
问题在于NO_AUTO_CREATE_USER
模式设置,因为它已从 MySQL 8.0 中完全删除。您需要找到配置文件中定义的位置(可以是my.cnf
、mysql.cnf
或类似内容,具体取决于您如何配置 MySQL 安装)并将其删除。您还可以删除其他模式,使其不再显式声明为文件明确指出:
A.3.7. | MySQL 8.0 安装时默认服务器 SQL 模式是什么? |
---|---|
MySQL 8.0 中的默认SQL模式包括以下模式:ONLY_FULL_GROUP_BY 、、、、、和。STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION |
有关所有可用模式和默认 MySQL 行为的信息,请参阅第 5.1.11 节 “服务器 SQL 模式”。
删除这些模式标志后,您应该能够启动 MySQL。系统可能会在第一次启动时抱怨表的版本错误,然后引擎会立即将 5.7 数据库升级到较新的 8.0 系统。如果您有任何使用 MyISAM 的数据库,您将需要认真考虑在不久的将来更新它们以使用 InnoDB,因为 MySQL 8.0 将发送消息,告知较旧的 MyISAM 表将来将被弃用。
希望这能为您提供一个可正常运行的数据库安装