【问题标题】:Is it possible to disable `sql_require_primary_key` per database?是否可以为每个数据库禁用“sql_require_primary_key”?
【发布时间】:2021-05-30 18:00:04
【问题描述】:

我有一个由 Digital Ocean 管理的 MySQL 数据库。为了防止跨节点的数据复制问题,DO 自动将您的实例设置为sql_require_primary_key。理论上这很好,只是有各种 WordPress 插件,尤其是 WP Cerber,它们不支持该设置。

我可以要求 Digital Ocean 为我禁用该设置,但我冒着无法正确复制数据的风险。所以我想知道的是,有没有办法为特定的数据库甚至表禁用该设置,或者该设置是否仅限于连接设置和服务器范围的设置?

【问题讨论】:

  • 您也可以为没有它的表创建一个 PRIMARY KEY。
  • 我试过了。遗憾的是,该插件不允许这样做。请参阅上面的链接。

标签: mysql sql wordpress digital-ocean


【解决方案1】:

您引用的页面上的第一个表是这样创建的:

CREATE TABLE IF NOT EXISTS cerber_log ( 
    ip varchar(39) CHARACTER SET ascii NOT NULL, 
    user_login varchar(60) NOT NULL, 
    user_id bigint(20) unsigned NOT NULL DEFAULT '0', 
    stamp bigint(20) unsigned NOT NULL, 
    activity int(10) unsigned NOT NULL DEFAULT '0', 
    KEY ip (ip) 
    ) DEFAULT CHARSET=utf8;

添加主键:

ALTER TABLE cerber_log ADD COLUMN primaryKey int primary key auto_increment;

您可以为字段 primaryKey 使用任何名称,只要它不是现有字段即可。

这不应该干扰插件。如果确实如此,那么您可能根本不应该(想要)使用该插件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 2016-08-18
    • 2014-02-10
    • 2018-11-16
    • 1970-01-01
    相关资源
    最近更新 更多