【发布时间】:2021-06-19 23:15:39
【问题描述】:
背景:WP 开发知识不多,但一般来说都是经验丰富的 PHP 开发人员。
所以,每个人都可能知道(或不知道,就像我不知道)DigitalOcean 的托管数据库系统设置为具有必需的主键(不可全局更改)。虽然我理解这样更好,但有时在 WordPress 网站上安装现有插件时,插件必须创建表,其中可能有也可能没有主键。
我有一个此类插件的列表,我将在可能的情况下向其发送改进请求,但作为一种解决方法,我想通过使用钩子和/或“必须使用的插件”来解决这个问题WordPress 系统在每个 create table 语句之前调用SET SESSION sql_require_primary_key = OFF;(或者一般的每个 sql 语句,如果没有办法只关注 create table 语句)。
- 这是一个“好”且可行的解决方法吗?
- 我怎样才能做到这一点(我应该调用什么钩子)?
【问题讨论】:
-
您是否尝试过验证它们是否允许您在创建表之前禁用主键要求?看起来如果您创建没有主键的表,这些表将无法正确复制,这就是他们现在强制执行此要求的原因。
-
@MarkB 谢谢你的评论。我不知道这是原因。所以我唯一的解决方案似乎是迁移我的数据库,因为我无法控制我的客户使用的一些插件,并且为每个插件手动创建数据库是不现实的,因为每次更新都可能创建一个新的......真是太可惜了……
-
@MarkB;也:是的。我已经验证过了。因为,当我手动创建表时(并通过 SQL 编辑器禁用 sql_require_primary_key 选项);即使没有主键,也可以成功创建表。
-
是的,我也对此感到非常沮丧。因此,我目前正在将某些内容从 DO 转移到 Lightsail,因为 Lightsail 没有此类索引要求。
-
@MarkB 如果您不介意我问:这是否意味着此类数据库无法复制?即使我转移到 AWS 或单独的 SQL droplet 集群?
标签: mysql wordpress primary-key digital-ocean wordpress-hook