问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MySQL错误代码[HY000][1824]的解决方案

创作时间:
作者:
@小白创作中心

MySQL错误代码[HY000][1824]的解决方案

引用
CSDN
1.
https://m.blog.csdn.net/m0_65152767/article/details/144536873

在数据库开发过程中,经常会遇到各种各样的错误。本文将介绍一个常见的MySQL错误代码[HY000][1824]的解决方案,帮助你快速定位问题并解决问题。

1、报错

[HY000][1824] Failed to open the referenced table 'admin'
[HY000][1824] Failed to open the referenced table 'user'

2、原因分析

  • 表引擎不兼容 如果你的数据库混合使用不同的表引擎,例如 MyISAM 和 InnoDB, 而你的 invite_codes 表默认使用 InnoDB,这可能会导致外键约束的引用问题。确保你的admin表和invite_codes表使用相同的存储引擎。

2、执行如下语句解决报错

ALTER TABLE admin ENGINE=InnoDB;
SHOW TABLE STATUS LIKE 'admin';
ALTER TABLE user ENGINE=InnoDB;
SHOW TABLE STATUS LIKE 'user';
CREATE TABLE invite_codes (
                              id INT NOT NULL AUTO_INCREMENT,
                              code VARCHAR(6) NOT NULL UNIQUE COMMENT '邀请码,6位整数,确保在有效期内唯一',
                              invitor INT DEFAULT NULL COMMENT '邀请人的ID,对应admin表中的id字段,表示生成该邀请码的管理员或用户',
                              invite_level TINYINT DEFAULT NULL COMMENT '邀请层级,对应admin表中level字段的值,表示邀请人的层级',
                              generated_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '生成时间,默认为当前时间',
                              expire_time DATETIME DEFAULT NULL COMMENT '失效时间,可为空',
                              remark TEXT DEFAULT NULL COMMENT '备注信息,可为空',
                              status ENUM('effective', 'expired', 'bound') NOT NULL DEFAULT 'effective' COMMENT '邀请码状态,默认为 "effective"',
                              bound_phone VARCHAR(20) DEFAULT NULL COMMENT '绑定的手机号,对应admin表中的phone字段,表示与邀请码关联的管理员或用户的手机号',
                              weixin_nickname VARCHAR(255) DEFAULT NULL COMMENT '微信用户的昵称,对应user表中的nickname字段,表示与邀请码关联的用户的微信昵称',
                              weixin_headimg VARCHAR(255) DEFAULT NULL COMMENT '微信用户的头像URL,对应user表中的avatar字段,表示与邀请码关联的用户的微信头像URL',
                              bound_wx_uid VARCHAR(255) DEFAULT NULL COMMENT '微信用户的唯一标识符,对应user表中的weChatUnionId字段,表示与邀请码关联的用户的微信唯一标识符',
                              admin_id INT DEFAULT NULL COMMENT '管理员ID,关联admin表,可为空',
                              user_id INT DEFAULT NULL COMMENT '用户ID,关联user表,表示与邀请码关联的用户',
                              is_locked TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否锁定,0表示未锁定,1表示已锁定,默认为0',
                              created_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建的时间戳,默认为当前时间',
                              last_modified_date TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最后更新的时间戳,默认为NULL,更新时自动设置为当前时间',
                              PRIMARY KEY (id),
                              FOREIGN KEY (admin_id) REFERENCES admin(id), -- 假设有一个admin表,添加外键约束
                              FOREIGN KEY (invitor) REFERENCES admin(id), -- 如果invitor总是指向admin表中的一个记录,添加外键约束
                              FOREIGN KEY (user_id) REFERENCES user(id) -- 假设有一个user表,添加外键约束
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号