MySQL创建带外键的videodata表时出现语法错误求助
外键创建失败的解决方法
问题根源
你遇到的errno:150外键约束错误,核心原因是关联字段的类型不匹配:
- userdata表的
email主键字段为VARCHAR(255) - 你创建videodata表时,
email字段定义为VARCHAR(50)
MySQL对外键约束的要求非常严格:关联的两个字段必须类型、长度、字符集/排序规则完全一致,否则无法成功创建约束。
修正后的建表语句
将videodata表的email字段长度调整为255,与userdata表保持一致,同时保证外键语法正确:
CREATE TABLE videodata ( id INT PRIMARY KEY AUTO_INCREMENT, email VARCHAR(255) NOT NULL, video_url VARCHAR(255) NOT NULL, video_title VARCHAR(255) NOT NULL, FOREIGN KEY (email) REFERENCES userdata(email) -- 可选:根据业务需求添加级联操作,比如删除用户时同步删除其视频数据 ON DELETE CASCADE ON UPDATE CASCADE );
额外注意事项
- 确认userdata表已创建完成,且
email确实是该表的主键 - 确保两张表使用相同的字符集和排序规则(比如统一使用utf8mb4)
内容的提问来源于stack exchange,提问作者Zaid Ahmad
相关产品推荐
相关产品推荐

