MySQL报错#1824:无法打开被引用表'ders'问题咨询
解决MySQL外键错误#1824:Failed to open the referenced table 'ders'
你遇到的错误通常是外键引用的表存在隐性问题,即便确认表已存在,也可以从以下方向排查解决:
- 核对表名大小写:Linux环境下MySQL默认区分表名大小写,确认
ders表的实际名称和SQL中的大小写完全一致,比如是否是Ders或DERS。 - 确认存储引擎一致性:外键仅支持InnoDB引擎,执行
SHOW CREATE TABLE ders;检查ders表的引擎是否为INNODB,若为MyISAM需修改:ALTER TABLE ders ENGINE=INNODB;。 - 匹配字段属性:
ders表的id字段必须是主键或唯一键,且数据类型要和ogrenciler的ders_id完全一致(包括是否无符号、长度等),执行DESCRIBE ders;确认。 - 指定数据库前缀:如果
ders表不在当前操作的数据库中,引用时需加上数据库名,比如REFERENCES your_db.ders(id)。 - 修复表结构:若
ders表存在隐性损坏,可执行ALTER TABLE ders ENGINE=InnoDB;重建表结构(InnoDB表无法用REPAIR命令)。 - 检查用户权限:确保当前用户拥有
ders表的REFERENCES权限,执行SHOW GRANTS FOR CURRENT_USER;查看权限配置。
你的SQL代码:
CREATE TABLE ogrenciler ( id INT, ders_id INT, FOREIGN KEY (ders_id) REFERENCES ders(id) ON DELETE CASCADE ) ENGINE=INNODB;
内容的提问来源于stack exchange,提问作者GamaRay
相关产品推荐
相关产品推荐

