mysql - MySQL 错误 1062:键的重复条目
问题描述
我制作了一个 SQL 脚本来创建和填充一些我将与 Django 框架一起使用的表。
在我的日期表中,我使用 UNIQUE 约束创建mois列,如下所述:
CREATE TABLE date (
dateID int NOT NULL,
annee int NOT NULL,
mois int NOT NULL,
.
.
CONSTRAINT PK_date PRIMARY KEY (dateID, annee, mois, semaine, jour),
UNIQUE KEY idx_mois (mois),
) Engine=innoDB;
这是 FK 的定义:
CREATE TABLE astreinte_mensu (
dateID int NOT NULL PRIMARY KEY,
annee int,
mois int,
Personne1Nuit int,
Personne2Nuit int,
Personne1Jour int,
Personne2Jour int,
FOREIGN KEY (annee) REFERENCES date(annee),
FOREIGN KEY (mois) REFERENCES date(mois),
FOREIGN KEY (Personne1Nuit) REFERENCES contact(PersonID),
FOREIGN KEY (Personne2Nuit) REFERENCES contact(PersonID),
FOREIGN KEY (Personne1Jour) REFERENCES contact(PersonID),
FOREIGN KEY (Personne2Jour) REFERENCES contact(PersonID)
) 引擎=innoDB;
稍后在脚本中我有我的程序fill_date:
CREATE PROCEDURE fill_date()
BEGIN
DECLARE currentdate DATE;
DECLARE stopdate DATE;
SET currentdate = CURDATE();
SET stopdate = ADDDATE(currentdate, INTERVAL 1 YEAR);
WHILE currentdate < stopdate DO
INSERT INTO date VALUES (
YEAR(currentdate)*10000+MONTH(currentdate)*100 + DAY(currentdate),
YEAR(currentdate),
MONTH(currentdate),
WEEKOFYEAR(currentdate),
DAY(currentdate));
SET currentdate = ADDDATE(currentdate,INTERVAL 1 DAY);
END WHILE;
END
当我启动文件时,出现与重复条目相关的错误。
所以我的桌子从 2018 年 6 月到 2019 年 6 月,这导致了错误..
第 121 行的错误 1062 (23000):键 'idx_mois' 的重复条目 '6'
有人可以点燃我的蜡烛吗?
编辑: Django 中的ForeignKey.to_field 参数需要 UNIQUE 约束,因为我想将 Astreinte_mensu.Mois 字段链接到Date.mois字段。这样我希望它显示月份而不是完整日期,如django 管理页面的截图所示
解决方案
没有日期组件的列;SELECT
而是使用各种日期时间函数在一边拆分
优先使用日期算术函数,而不是数字和字符串函数。例子CURDATE() - INTERVAL 2 MONTH
。
UNIQUE KEY idx_mois (mois)
意味着您在该表中不会有超过 12 行?或者您是否有超过 12 个月的时间?也许你不是这个意思UNIQUE
?
推荐阅读
- javascript - startAction() 函数中的错误是什么?
- python - 在python中将列表分成两半而不重复的每种方法
- gitlab - 不确定如何将 rstudio 与 gitlab 连接?
- javascript - 从 Jquery UI Datepicker 中的 dtes 范围获取差异
- java - 服务器 tomcat 9.0 启动失败
- bash - 在“then”附近抨击意外令牌
- sql - 从 Django 中的多个数据库表返回结果
- php - 我这里的代码太多了,想缩短这个
- javascript - 如何获取 JavaScript 对象的键的字符串值?
- ruby - 如何关联不同类型的角色(代理和客户)