这是一个错误(我可以手动为它创建一个PK),还是这个功能?
答案 0 :(得分:1)
我在ejabberd 2.1.x分支中查看了当前的mysql.sql以获取https://github.com/processone/ejabberd/blob/2.1.x/src/odbc/mysql.sql的其他上下文。
CREATE TABLE spool (
username varchar(250) NOT NULL,
xml text NOT NULL,
seq BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE,
created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) CHARACTER SET utf8;
看起来“seq”列是唯一标识符,可以与主键相同的方式使用,但不能对其进行外键引用。我希望这不重要,因为当你需要通过外键约束在另一个mysql表中通过序列号引用特定的离线消息时,ejabberd中从来没有时间。
我确信processone的某个人对此有一个意见,这导致了一个独特的约束,而不是一个主键。与mod_offline_odbc广泛合作后,我可以向您保证,如果您将“primary_key(seq)”添加到假脱机表定义并删除seq列上的冗余唯一约束,它将不会对ejabberd产生影响。