Php 具有自动_增量和当前_时间戳的组合键一起工作

Php 具有自动_增量和当前_时间戳的组合键一起工作,php,mysql,auto-increment,composite-primary-key,Php,Mysql,Auto Increment,Composite Primary Key,与许多其他关于带有自动增量的组合键的问题类似,我收到以下错误: 表定义不正确;只能有一个自动列,必须将其定义为键 我正在做的是对表中的所有更改进行历史跟踪。每次进行更改时,都会插入一个带有新时间戳的新行,保留以前的修改不变 我关心的DDL是: DROP TABLE IF EXISTS personnel; CREATE TABLE IF NOT EXISTS personnel ( modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDAT

与许多其他关于带有
自动增量的组合键的问题类似,我收到以下错误:

表定义不正确;只能有一个自动列,必须将其定义为键

我正在做的是对表中的所有更改进行历史跟踪。每次进行更改时,都会插入一个带有新时间戳的新行,保留以前的修改不变

我关心的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\u TIMESTAMP
AUTO\u INCREMENT
。那么有没有一种方法可以在不让PHP生成时间戳的情况下解决这个问题(这样我的模型就可以像插入任何其他表一样插入,让控制器来做脏活)。

MySQL的错误消息还有更多需要改进的地方

自动递增列必须位于索引的开头。在您的情况下,您需要添加另一个索引-
键id(id)