创建MySQL artist表触发Error 1064 (42000)错误,求修复方案
MySQL Error 1064 (42000) 修复方案:avatar字段DEFAULT值语法错误
问题重现
执行创建artist表的SQL语句时,触发如下语法错误:
1064 (42000): 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 '`image.jpeg`, rank VARCHAR(256) NOT NULL, env1 VARCHAR(256) NOT NULL, ' at line 14
错误根源在avatar VARCHAR(1028) DEFAULT image.jpeg``这一行,误用了反引号包裹字符串默认值。
修复方法
将默认值的反引号替换为单引号,修改后的完整表创建语句如下:
artist_table_create = """ CREATE TABLE artist ( id INT NOT NULL, sid INT NOT NULL, name VARCHAR(32) NOT NULL, birthdate DATE NOT NULL, gender ENUM('0', '1') NOT NULL, code_melli VARCHAR(32) NOT NULL, phonenumber VARCHAR(16) NOT NULL, email VARCHAR(128) NOT NULL, location1 VARCHAR(32) NOT NULL, location2 VARCHAR(32) NOT NULL, date_signedup DATE NOT NULL, verification_status ENUM('0', '1'), avatar VARCHAR(1028) DEFAULT 'image.jpeg', -- 替换反引号为单引号 rank VARCHAR(256) NOT NULL, env1 VARCHAR(256) NOT NULL, env2 VARCHAR(256) NOT NULL, env3 VARCHAR(256) NOT NULL, PRIMARY KEY (id, sid, phonenumber) );"""
原因说明
MySQL对符号的使用有明确规则:
- 反引号(`)仅用于包裹标识符,比如表名、字段名(当名称含特殊字符或与关键字冲突时使用)
- 单引号(')用于包裹字符串值,包括字段的默认字符串
你用反引号包裹image.jpeg,MySQL会将其识别为一个标识符而非字符串值,因此触发语法错误。
内容的提问来源于stack exchange,提问作者MohsenFN
相关产品推荐
相关产品推荐

