在TablePlus中创建关联users表的posts表时出现SQL语法错误
创建关联posts表的MySQL语法错误解决
报错内容
Query 1 ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VISIBLE,
CONSTRAINTuid
FOREIGN KEY (uid)
REFERENCESusers(id' at line 9
原执行SQL
CREATE TABLE `posts` ( `id` INT NOT NULL AUTO_INCREMENT, `title` VARCHAR(255) NOT NULL, `desc` VARCHAR(1000) NOT NULL, `img` VARCHAR(255) NOT NULL, `date` VARCHAR(255) NOT NULL, `uid` INT NOT NULL, PRIMARY KEY (`id`), INDEX `uid_idx` (`uid` ASC) VISIBLE, CONSTRAINT `uid` FOREIGN KEY (`uid`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE );
问题根源
VISIBLE是MySQL 8.0及以上版本才引入的索引可见性控制关键字,你的MySQL版本低于8.0的话,数据库不识别这个语法,直接触发报错。
修复方法
删掉索引定义行里的VISIBLE即可,修改后的SQL如下:
CREATE TABLE `posts` ( `id` INT NOT NULL AUTO_INCREMENT, `title` VARCHAR(255) NOT NULL, `desc` VARCHAR(1000) NOT NULL, `img` VARCHAR(255) NOT NULL, `date` VARCHAR(255) NOT NULL, `uid` INT NOT NULL, PRIMARY KEY (`id`), INDEX `uid_idx` (`uid` ASC), CONSTRAINT `uid` FOREIGN KEY (`uid`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE );
如果确认自己使用的是MySQL 8.0+版本,检查下VISIBLE拼写是否有误,或者核实数据库连接的版本是否真的为8.0及以上。
内容的提问来源于stack exchange,提问作者mxcdh
相关产品推荐
相关产品推荐

