0

を使用した複合キーに関する他の多くの質問と同様にAUTO_INCREMENT、次のエラーが表示されます。

Incorrect table definition; there can be only one auto column and it must be defined as a key

私がやっていることは、テーブル内のすべての変更の履歴を作成することです。変更が行われるたびに、新しい行が新しいタイムスタンプで挿入され、以前の変更はそのまま残ります。

懸念している私のDDLはこれです:

DROP TABLE IF EXISTS personnel;
CREATE TABLE IF NOT EXISTS personnel
(
    modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL,
    ...

    PRIMARY KEY (modified, id),
    ...
) ENGINE=InnoDB;

と の両方CURRENT_TIMESTAMPを使用しているため、このエラーが発生していると思いますAUTO_INCREMENTPHPにタイムスタンプの生成をさせずにこれを解決する方法はありますか(そのため、私のモデルは他のテーブルのように挿入して、コントローラーに汚い仕事をさせることができます)。

4

1 に答える 1

1

MySQL のエラー メッセージには、さらに多くの要望があります...

自動インクリメント列は、インデックスの先頭にある必要があります。あなたの場合、別のインデックスを追加する必要があります - KEY id(id)

于 2013-08-05T10:57:15.437 に答える