我收到以下错误:
ERROR 1215 (HY000) at line 13: Cannot add foreign key constraint
用于以下查询:
ALTER TABLE client_generique
ADD CONSTRAINT client_generique_boutique_id_boutique_id
FOREIGN KEY (boutique_id) REFERENCES boutique (id)
ON DELETE SET NULL;
boutique.id
是primary key unique not null
。
精品表的phpmyadmin结构导出是:
--
-- Table structure for table `boutique`
--
CREATE TABLE `boutique` (
`id` bigint(20) NOT NULL,
`nom` varchar(255) NOT NULL,
`identifiant_site` varchar(8) NOT NULL COMMENT 'the eight number identifier from the bank',
`certificate` varchar(255) NOT NULL COMMENT 'changes according to the mode, this will be used as salt in the sha1 that will be sent to the bank as the ''signature''',
`mode` varchar(10) NOT NULL COMMENT 'is the ''vads_ctx_mode'': TEST or PRODUCTION',
`payment_system` varchar(10) NOT NULL COMMENT 'CYBERPLUS OR PAYZEN for the new payment system added in end 2014'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Indexes for table `boutique`
--
ALTER TABLE `boutique`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `unique_mode_per_identifiant_idx` (`identifiant_site`,`mode`);
我不明白。是什么原因?如何解决这个问题?
答案 0 :(得分:0)
您的表格client_generique
是否可以将boutique_id
中的值存储在您的表boutique
中不存在?
由于您尝试建立对boutique
的引用,因此该表中必须存在值。
答案 1 :(得分:0)
感谢Philipp Dietl的解决方案。
在非空列上删除时,无法在delete上添加设置为null的外键约束。
我刚刚将boutique_id
列修改为BIGINT
(但没有BIGINT NOT NULL
)。