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

MySQL#1064语法错误咨询:用户表创建SQL语句问题排查

解决MySQL #1064语法错误:用户表创建语句修正

Got it,这个#1064语法错误其实很好排查——问题出在你对MySQL/MariaDB标识符的包裹方式上!

错误原因

MySQL里有明确的语法规则:

  • 表名、列名这类标识符,要么用**反引号(`)**包裹,要么在标识符不是关键字/不含特殊字符时直接写(不需要任何包裹);
  • 单引号(')是专门用来包裹字符串值的(比如你语句里enum('0','1')的用法是完全正确的)。

你原来的语句错误地用单引号包裹了表名和所有列名,数据库会把这些当成字符串来解析,自然就触发语法错误了。

修正后的完整SQL语句

CREATE TABLE IF NOT EXISTS `users` ( 
  `id` int(11) NOT NULL AUTO_INCREMENT, 
  `username` varchar(255) NOT NULL, 
  `first_name` varchar(255) NOT NULL, 
  `last_name` varchar(255) NOT NULL, 
  `email` varchar(255) NOT NULL, 
  `password` varchar(255) NOT NULL, 
  `sign_up_date` date NOT NULL, 
  `activated` enum('0','1') NOT NULL, 
  PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

可选简化写法

如果你的标识符(比如users、id这些)都不是MySQL的关键字,也可以直接去掉所有反引号,代码会更简洁:

CREATE TABLE IF NOT EXISTS users ( 
  id int(11) NOT NULL AUTO_INCREMENT, 
  username varchar(255) NOT NULL, 
  first_name varchar(255) NOT NULL, 
  last_name varchar(255) NOT NULL, 
  email varchar(255) NOT NULL, 
  password varchar(255) NOT NULL, 
  sign_up_date date NOT NULL, 
  activated enum('0','1') NOT NULL, 
  PRIMARY KEY (id) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

内容的提问来源于stack exchange,提问作者clonte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:10:14