我必须设置一个持久的自定义 SQL 模式持久到我的服务器。我在 /etc/mysql/mysql.conf.d/mysqld.cnf 中添加了这一行
[mysqld]
...
sql-mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Run Code Online (Sandbox Code Playgroud)
当我尝试运行 mysql 时,出现以下错误:
2020-06-03T09:49:24.567568Z 0 [错误] [MY-000077] [服务器] /usr/sbin/mysqld:将值“STRICT_TRANS_TABLES、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION”设置为“sql_mode”时出错。mysqld 版本 8.0.20-0ubuntu0.20.04.1 适用于 x86_64 上的 Linux ((Ubuntu))
我尝试更改sql-mode
为sql_mode
并删除双引号,但它没有改变。
小智 12
只需编辑/etc/mysql/my.conf,删除“NO_AUTO_CREATE_USER”。结果将是:
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
Run Code Online (Sandbox Code Playgroud)
这对我有用!
小智 1
行为有一定的局限性sql_mode
不同 Linux 环境中
相反,您应该卸载它并用MariaDBmysql
替换它
。一个非常好的 mysql 服务器替代方案。(就你而言 - 这是 mysql 服务器,除了它的包名称)
卸载:
apt remove mysql mysqld mysql-server mysql-client
# note we do not purge this package, since we have databases with data in place.
Run Code Online (Sandbox Code Playgroud)
现在安装 MariaDB - https://downloads.mariadb.org/mariadb/repositories/#distro=Ubuntu&distro_release=focal--ubuntu_focal&mirror=icm&version=10.4
有时,软件包维护者已经拥有 MariaDB。所以,很简单:
apt install mariadb mariadb-server mariadb-client
我鼓励您事先使用或其他方式备份您的数据mysqldump
。但我要注意的是,安装后maraidb
(只要它将使用相同的数据目录),那么所有数据库和表将继续正常工作。