在XAMPP中将innodb_strict_mode设置为OFF

由于租用服务器上的PHP版本已经普遍更新至7.3,我决定更新XAMPP,但在更新后,数据库出现了问题,于是我进行了一些调查。

XAMPP:10.4.8马里亚DB。

很多人在说XAMPP有这有那,但对于在Windows环境下使用它来说,配置非常简单(几乎不需要配置),是一个很好的选择。

然而这次使用mysqldump从旧版MySQL进行备份,在XAMPP环境中无法还原(出现错误),所以问题得到解决。

错误的内容是……

ERROR 1118 (42000) at line 657: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline.

这是那个人。

简而言之,如果表中包含过多的TEXT类型或BLOB类型的列,则会超出表管理的大小限制而导致错误。实际上,当你进行调查时,你会发现首先要将innodb_strict_mode设置为OFF。

因为是XAMPP,所以需要对xampp/mysql/bin/my.ini进行修改,将innodb_strict_mode=OFF添加进去。

在XAMPP控制面板中,MySQL可以毫无问题地启动。

然而实际上登录MySQL并查看的话…

MariaDB [(none)]> SHOW VARIABLES LIKE 'innodb_strict_mode';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_strict_mode | ON    |
+--------------------+-------+
1 row in set (0.001 sec)

是的,这个”MariaDB”是患有癌症?事实上,即使进行了调查,也很难找到相关信息。

只写结果

关于之前那个My.ini的添加方式

[mariadb]
innodb_strict_mode=OFF

创建[mariadb]块并在其中进行记录是必要的。
如果您已经进行了其他设置,则可能已经存在[mariadb]块,您可以在之后继续写入。

在重新启动后,登录MySQL(MariaDB)并输入以下命令…

MariaDB [(none)]> show variables like 'innodb_strict_mode';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| innodb_strict_mode | OFF   |
+--------------------+-------+
1 row in set (0.001 sec)

太好了。已经正确修改了。

在之后,我成功地使用mysqldump备份了数据,并且导入时没有遇到任何错误。

我其实知道XAMPP从某个时候起已经不再使用MySQL而是改用了兼容的MariaDB,但我没有想到会有配置方面的变化。
特别是对于初学者来说可能会有困惑,所以我决定把这个记录下来。