Windows系统XAMPP环境MySQL创建外键表报错[1064],求语法修正
修正MySQL创建外键表的语法错误
Hey,我一眼就看到你这条CREATE TABLE语句的问题了——外键约束的定义位置写错了,这也是新手实操关联表时常犯的小错误~
你原来把外键声明放在了表结构的括号外面,但MySQL(包括你用的MariaDB)要求外键约束必须和字段定义一起放在括号内部。另外还有个小细节:tinyint(9)里的数字是显示宽度,不影响字段的实际存储范围,如果你只是用来记录登录尝试次数,直接写tinyint就足够啦。
修正后的完整SQL语句如下,你可以直接在phpMyAdmin里执行:
CREATE TABLE loginattempts ( id int(16) NOT NULL, loginattempts tinyint NOT NULL, attemptdate DATETIME NOT NULL, FOREIGN KEY (id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = INNODB;
额外给你提两个实用小建议:
- 确保
users表的id字段是主键或者带有唯一索引,否则外键约束会创建失败,这是外键生效的基本要求 - 建议给
loginattempts表的id加上主键约束(比如改成id int(16) NOT NULL PRIMARY KEY),这样能保证表数据的唯一性,也更符合关联表的设计规范
内容的提问来源于stack exchange,提问作者malik727
相关产品推荐
相关产品推荐

