簡體   English   中英

執行插入時出現MySQL錯誤1452

[英]MySQL error 1452 when doing insert

這個問題可能真的很愚蠢,我知道它之前已被問過,但我在以前的帖子中找不到任何幫助我的內容。 我有2個表(實際上有更多,但有2個相關):

create table user (
email varchar(100) primary key,
first_name varchar(20) not null,
last_name varchar(20) not null,
password_hash varchar(100) not null,
salt varchar(10) not null,
account_status enum('pending','active','locked','retired') not null,
user_type enum('partsrequestor', 'manager', 'sysadmin') not null,
security_question varchar(256) not null,
security_question_answer varchar(64) not null,
constraint email_user_type_unique unique (email, user_type)
);

create table sysadmin (
email varchar(100) primary key,
user_type enum('sysadmin') not null,
foreign key (email, user_type) references user (email, user_type)
);

我正在嘗試將一些示例數據添加到表中:

insert into user values
('usera@company.com','firstnamea','lastnamea','c448602d3063e83d486403cc7566706d4eb40c8cb674d6cfb5436d078bc574dc','0590','active','partsrequestor','security question a', 'Answer a'), 
('userb@company.com','firstnameb','lastnameb','44367f83812a4478631e5d02a2b833ebe0a17e405a1c4a5700e41891d6b4ecb6','0591','pending','partsrequestor','security question b', 'Answer b'),
('userc@company.com','firstnamec','lastnamec','028973863316e14501338d012222f4b425fd91d3a50639c51a2aaab489d4dd2c','0592','locked','partsrequestor','security question c', 'Answer c'),
('userd@company.com','firstnamed','lastnamed','05ed7e29083998f403eb5531986687a87aafa3d954e59119389e8779fbc08f2e','0593','retired','partsrequestor','security question d', 'Answer d'),
('usere@company.com','firstnamee','lastnamee','e0e0f0162016e0baccf6cfa19dd184c1b39c02c12bec4aee81755db1cd1e4b6d','0594','active','manager','security question e', 'answer e'),
('userf@company.com','firstnamef','lastnamef','ba8e9abdc4e7640cdfc672b63d86f8aca72c91b729b5d462182482a0dc59d38b','0515','active','sysadmin','security question f', 'answer f')
;

insert into sysadmin values
('userf@company.com', 'sysadmin')
;

插入sysadmin失敗了

錯誤1452(“無法添加或更新子行:外鍵約束失敗”)

我嘗試禁用外鍵檢查,運行插入,並在兩個表之間的電子郵件和user_type上進行連接; userf出現就好了,所以我知道數據不匹配。 另一張海報還提到使用不同的存儲引擎在使用不同的表時遇到問題,所以我從頭開始重新創建整個數據庫並運行set storage_engine = innodb; 在添加表之前,但它沒有幫助。

有任何想法嗎?

提前致謝

我認為ENUM類型不兼容,嘗試以這種方式更改user_type字段 -

create table user (
...
user_type enum('sysadmin', 'partsrequestor', 'manager') not null,
...
);

...所以'sysadmin'在第一位,就像在sysadmin表中一樣。

嘗試更改表以使其與命令一起使用: SET FOREIGN_KEY_CHECKS = 0; 並嘗試再次運行查詢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM