You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB创建users_details表报ERROR 1064语法错误如何排查

报错根因

ERROR 1064语法错误的触发点是SQL最后一行的VISIBLE关键字:这个是MySQL 8.0版本才新增的索引可见性语法,你当前使用的MariaDB版本不支持该关键字,解析器无法识别这个多余的标记,就会抛出第9行附近')'位置的语法错误。
另外你当前的SQL还有一处冗余设计:id字段已经被定义为主键,主键天然具备非空、唯一的属性,不需要额外再给id创建名为id_UNIQUE的唯一索引,多余的索引会浪费存储空间、降低表的写入效率。

修复方法

直接删除VISIBLE关键字即可,数据库默认创建的索引本身就是可见状态,不需要额外声明。修正后可正常执行的SQL如下:

CREATE TABLE `usersdb`.`users_details` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(45) NOT NULL,
  `password` VARCHAR(45) NOT NULL,
  `email_address` VARCHAR(45) NOT NULL,
  `first_name` VARCHAR(45) NOT NULL,
  `last_name` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `id_UNIQUE` (`id` ASC)
);

如果去掉冗余的唯一索引,可以进一步简化成下面的写法,执行性能更好:

CREATE TABLE `usersdb`.`users_details` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(45) NOT NULL,
  `password` VARCHAR(45) NOT NULL,
  `email_address` VARCHAR(45) NOT NULL,
  `first_name` VARCHAR(45) NOT NULL,
  `last_name` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`)
);

补充说明:MariaDB直到10.6版本才推出索引可见性控制的相关功能,使用的是IGNORED/NOT IGNORED关键字,和MySQL的VISIBLE/INVISIBLE语法不通用,跨数据库迁移脚本的时候要注意语法兼容问题。

内容的提问来源于stack exchange,提问作者Sudhansh Anand ce19b091

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 02:24:22