-1

我的 ISP 已更新托管我的应用程序的共享服务器。它涉及从 MySQL 5.6 到 MariaDB 10.3 的更新。ISP 写道: MariaDB 在很大程度上与 MySQL 兼容,并且大多数 Web 应用程序都可以与 MariaDB 一起正常工作。换句话说,它们不会受到最小差异的影响。

但是,自从更新以来,我的许多 EDIT 和 INSERT 不再起作用并产生致命错误。在我的搜索中,我发现:

  • 问题在于写入数据库
  • 当并非所有字段都有值时似乎会发生,而我的应用程序中允许使用空字段

在我的进一步调查中,我遇到了: https ://forums.cpanel.net/threads/mariadb-10-2-disabling-strict-mode.635157/ 根据这个线程,我了解解决方案可能是在更改 sql 模式服务器设置来自:

STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

到:

NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

我试图通过 DirectAdmin/PHPAdmin 变量对其进行更改。由于它是共享服务器,因此我不允许更改设置,因此无法检查(需要超级权限)。

我现在有3个问题:

  1. 这会是解决方案吗?在这种情况下,我会要求我的 ISP 更改此设置。
  2. 这是修复它的最佳方法吗?
  3. 我可以用另一种方式解决这个问题吗?

建议非常感谢。

4

1 回答 1

0

该问题是由向数据库写入空值引起的。如果表单中允许空值,则将其保存为空字符串“”。但是,如果数据库中的字段是 INT 或 DOUBLE 类型,则会导致错误。要解决此问题,需要将数据库表中的字段更改为 VARCHAR 类型。另一种选择是将查询更改为将空字符串写入 INT、DOUBLE 类型的 0 值。将字段类型更改为 VARCHAR 是更简单的解决方案。

于 2021-02-24T15:54:11.273 回答