在昨天将 MariaDB 更新到 v10.3.26(和 10.2.35)之后,最近的 MariaDB 更新后,这个问题开始发生在很多人身上。此问题已在此处解决:https ://jira.mariadb.org/browse/MDEV-24121
到目前为止,这些是唯一已知的解决方案:
1. 将您的 PHP 升级到 7.3:这些错误似乎显示在使用 php < 7.3 的网站上。因此,将您网站的 PHP 升级到 7.3 或 7.4 版应该可以解决问题。
缺点:不是很多应用程序都可以像这样轻松升级到 php 7.3。有时您可能需要更新您的平台,重写一些代码或检查所有依赖项,看看它们是否都适用于 7.3。对于许多成熟的应用程序来说,这可能不是一个快速解决方案。
2. 降级 MariaDB:这是一个临时修复,因为降级 MariaDB 会将其设置回之前的状态。
缺点:通过单击 cpanel 中的按钮来降级 MariaDB 并不是一件容易的事。您可能需要网络工程师的帮助才能为您进行降级。之后,您可能还需要对 MariaDB 软件包进行 yum 锁定,以避免在修补它们之前对其进行更新。
3. 添加'options' => [PDO::ATTR_EMULATE_PREPARES => true]
到数据库配置:这已在一些答案中提出,这可能会解决 1 个问题,但会引发许多其他问题。
缺点:将上述内容添加到数据库配置文件为我解决了 1 个问题,但它也打开了很多其他失败的查询、失败的数据库插入等。所以我根本不推荐这个修复。
4. 等待 MariaDB 更新:下一次更新应该会解决这个问题。
缺点:我们不知道需要多长时间才能获得修复旧版本 PHP 的此问题的更新。甚至可能是几天,一些应用程序可能无法等待那么久。
总而言之,这些是我目前能看到的唯一选择。只是希望很快有一个修复它。
短期修复:总之,考虑到我的应用程序需要大量工作才能为 php 7.3 做好准备,降级 MariaDB 似乎是我唯一简单(排序)的临时修复。我将 MariaDB 降级到 10.2.34 并锁定它,错误不再出现。
长期修复:最好最终让您的应用程序为 php 7.3 做好准备并升级到该版本,这样 MariaDB 较新版本也不会抱怨。