【问题标题】:Why is primary key a duplicate [duplicate]为什么主键重复[重复]
【发布时间】:2017-06-09 05:44:25
【问题描述】:

我正在用 PHP 和 MySql 构建一个 CRUD 应用程序。它使用两个表,分别称为 usersmedical_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 个新表(usersmedical_records)。

此时,每当我尝试注册第二个用户时,都会收到错误消息:

QUERY FAILED: Duplicate entry '0' for key 'PRIMARY'

尽管两个表都有自动递增的主键,但还是会发生这种情况。对此有何解释?

【问题讨论】:

  • 您说两个表都有自动递增的主键,但我在您的users 表中没有看到任何自动递增。
  • 如果在您修复第一个表中的自动递增问题后此问题仍然存在,请edit您的问题以显示用于注册新用户的查询序列。
  • 标记为jQuery,嗯?
  • 截断表格并重试。设置 FOREIGN_KEY_CHECKS=0;截断users;截断medical_records; SET FOREIGN_KEY_CHECKS=1;

标签: php mysql


【解决方案1】:

users 表中的id 未设置为AUTO_INCREMENT。这就是发生这种情况的原因。

【讨论】:

  • 傻我!谢谢! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 2011-09-21
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多