我正在使用PHP构建一个CRUD应用程序MySQL的。它使用两个表,称为用户和 medical_records :
CREATE TABLE `users` (
`id` int(11) NOT NULL,
`username` varchar(255) NOT NULL,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(1024) NOT NULL,
`validation_code` text NOT NULL,
`active` tinyint(1) NOT NULL,
`telefon` varchar(255) DEFAULT NULL,
`oras` varchar(255) DEFAULT NULL,
`adresa` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE medical_records (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`fo` VARCHAR(255),
`condition` VARCHAR(255),
`transfer` VARCHAR(255),
`memo` text(1024),
`body_temperature` VARCHAR(255),
PRIMARY KEY (`id`),
CONSTRAINT FK_medical_records_1
FOREIGN KEY (user_id) REFERENCES users(id)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
这些表的“业务逻辑”是:每个用户都有一个(仅一个)医疗记录。
我只使用用户表时使用并测试了该应用程序。注册并登录工作正常,因此我得出结论,问题的来源不能是应用程序(PHP)代码。
我后来掺杂了用户表并添加了应用程序现在使用的2个新表(用户和 medical_records )。
此时每当我尝试注册第二个用户时,都会收到错误:
QUERY FAILED: Duplicate entry '0' for key 'PRIMARY'
尽管两个表都有自动递增的主键,但仍会发生这种情况。那可能是什么解释?
答案 0 :(得分:2)
id
表中的users
未设置为AUTO_INCREMENT
。这就是为什么会发生这种情况。