为什么主键是重复的

时间:2017-01-24 12:13:07

标签: php mysql

我正在使用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'

尽管两个表都有自动递增的主键,但仍会发生这种情况。那可能是什么解释?

1 个答案:

答案 0 :(得分:2)

id表中的users未设置为AUTO_INCREMENT。这就是为什么会发生这种情况。