gpt4 book ai didi

mysql - MariaDB(MySQL?)无法创建外键 - REFERENCES 命令被拒绝

转载 作者:行者123 更新时间:2023-11-29 11:19:38 24 4
gpt4 key购买 nike

我在 MariaDB 上尝试在名为 isotemp 的表上设置外键,引用另一个名为 ISO-3166-2-status 的表。我之前已使用同一用户添加了对同一数据库中所有先前表的引用,但这次错误代码:1142。对于表“ISO-3166-2-”,REFERENCES 命令拒绝用户“symfony”@“localhost” status.id' 发生了。我查阅了文档( https://mariadb.com/kb/en/mariadb/grant/#table-privileges ),并注意到 REFERENCES 权限在两个表中都被记录为“未使用”作为列上下文。

当我以 root 身份连接时,命令 GRANT REFERENCES ON geo.* TO symfony@localhost; 执行时没有错误,但错误消息仍然存在。然后,我尝试执行 GRANT REFERENCES ON geo.ISO-3166-2-status to symfony@localhost;GRANT REFERENCES ON geo.isotemp to symfony@localhost; 两者都执行没有错误,以下是用户 symfonySHOW GRANTS 命令的输出:

GRANT FILE, REFERENCES ON *.* TO 'symfony'@'localhost' IDENTIFIED BY PASSWORD '************'
GRANT ALL PRIVILEGES ON `geo`.* TO 'symfony'@'localhost'
GRANT ALL PRIVILEGES ON `symfony`.* TO 'symfony'@'localhost'
GRANT REFERENCES ON `geo`.`ISO-3166-2-status` TO 'symfony'@'localhost'
GRANT REFERENCES ON `geo`.`isotemp` TO 'symfony'@'localhost'

...但我仍然无法创建外键。有问题的外键命令:

alter table isotemp add foreign key(statusid) references `ISO-3166-2-status`.`id`;

这是我的表格:

SHOW CREATE TABLE `isotemp`;

CREATE TABLE `isotemp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`country` varchar(50) DEFAULT NULL,
`alpha` char(2) NOT NULL,
`status` varchar(50) NOT NULL,
`statusid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=657 DEFAULT CHARSET=utf8

SHOW CREATE TABLE `ISO-3166-2-status`;

CREATE TABLE `ISO-3166-2-status` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`status` char(24) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
UNIQUE KEY `status` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

我尝试过重新连接并重新启动服务器,但没有成功。请告诉我我忽略了一些显而易见的事情。永恒的感激之情。

最佳答案

应该这样做的方式如下。

ALTER TABLE isotemp ADD CONSTRAINT fk_id FOREIGN KEY (statusid) REFERENCES ISO-3166-2-status(id);

让我知道它是否有效。

关于mysql - MariaDB(MySQL?)无法创建外键 - REFERENCES 命令被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39151400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com