【发布时间】:2017-06-09 05:44:25
【问题描述】:
我正在用 PHP 和 MySql 构建一个 CRUD 应用程序。它使用两个表,分别称为 users 和 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;
这些表的“业务逻辑”是:每个用户都有一个(只有一个)医疗记录。
当它只有 users 表时,我使用并测试了该应用程序。注册和登录工作正常,所以我得出结论问题的来源不可能是应用程序的 (PHP) 代码。
我后来添加了 users 表并添加了应用程序现在使用的 2 个新表(users 和 medical_records)。
此时,每当我尝试注册第二个用户时,都会收到错误消息:
QUERY FAILED: Duplicate entry '0' for key 'PRIMARY'
尽管两个表都有自动递增的主键,但还是会发生这种情况。对此有何解释?
【问题讨论】:
-
您说两个表都有自动递增的主键,但我在您的
users表中没有看到任何自动递增。 -
如果在您修复第一个表中的自动递增问题后此问题仍然存在,请edit您的问题以显示用于注册新用户的查询序列。
-
标记为
jQuery,嗯? -
截断表格并重试。设置 FOREIGN_KEY_CHECKS=0;截断
users;截断medical_records; SET FOREIGN_KEY_CHECKS=1;