我在mysql中添加外键时遇到了问题(使用phpmyadmin).
ALTER TABLE `production_x_country` ADD FOREIGN KEY (`country`) REFERENCES `pmdb_0.3.12`.`countries`(`iso_3166_1`) ON DELETE CASCADE ON UPDATE CASCADE;
Run Code Online (Sandbox Code Playgroud)
#1215 - 无法添加外键约束
基于一些研究和测试,我得出的结论是CHAR
(那个production_x_country
.country
字段) 没有有效的外键字段类型 - 尽管我没有在mysql文档中找到任何暗示.如果我将列类型更改为其他类型的字符类型VARCHAR
,则该过程有效.
类似的问题在这里得到了"解决",但是这个链接的答案不是类型问题,而是关于国家代码是主键(对我来说是完全合理的):https://stackoverflow.com/a/1419235/4302731
表格说明:
CREATE TABLE IF NOT EXISTS `countries` (
`iso_3166_1` char(3) NOT NULL, <----- primary key to be referenced to
`name` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `countries` ADD PRIMARY KEY (`iso_3166_1`);
CREATE TABLE IF NOT EXISTS `production_x_country` (
`production` …
Run Code Online (Sandbox Code Playgroud)