0

これはバグですか(手動でPKを作成できます)、それとも機能ですか?

4

1 に答える 1

1

https://github.com/processone/ejabberd/blob/2.1.x/src/odbc/mysql.sqlで追加のコンテキストについて、ejabberd2.1.xブランチの現在の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」列は、外部キー参照を作成できないことを除いて、主キーと同じように使用できる一意の識別子のようです。ejabberdでは、外部キー制約を使用して別のmysqlテーブルのシーケンス番号で特定のオフラインメッセージを参照する必要がある場合がないため、これは重要ではないと思います。

processoneの誰かがこれについて意見を持っていたと思いますが、その結果、主キーではなく一意の制約が発生しました。mod_offline_odbcを広範囲に使用したので、スプールテーブル定義に「primary_key(seq)」を追加し、seq列の冗長な一意性制約を削除しても、ejabberdに違いがないことを保証できます。

于 2012-02-01T18:33:26.710 に答える