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

MySQL #1064语法错误求助:XAMPP环境建表语句报错

解决MySQL建表时的#1064语法错误

我帮你找到了两处语法错误的根源,都是逗号使用不当导致的——这是编写SQL时非常容易疏忽的小细节,咱们来逐个排查:

错误1:ACTORS表的ENGINE行语法错误

在ACTORS表的定义中,PRIMARY KEY (actor_id)语句末尾多了一个额外的逗号,导致MySQL无法正确解析后续的ENGINE=InnoDB配置:

-- 错误写法
PRIMARY KEY (actor_id),
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

这里的多余逗号会让MySQL误以为还有字段要定义,从而在遇到)ENGINE时触发语法错误。

错误2:FILESTAG表的PRIMARY KEY行语法错误

在FILESTAG表的定义中,PRIMARY KEY (files_tag_id)语句末尾缺少了必要的逗号,导致后续的KEY idx_fk_tag_id无法被正确识别:

-- 错误写法
PRIMARY KEY (files_tag_id)
KEY idx_fk_tag_id (tag_id),

缺少逗号会让MySQL把PRIMARY KEY和后面的KEY语句连在一起解析,不符合SQL的语法规范。


修正后的完整SQL语句

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

DROP SCHEMA IF EXISTS htmlProject;
CREATE SCHEMA htmlProject;
USE htmlProject;

-- Table structure for table `actor`
CREATE TABLE ACTORS (
    actor_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    actor_name VARCHAR(50) NOT NULL,
    joined_on DATETIME NOT NULL,
    actor_password VARCHAR(50) NOT NULL,
    PRIMARY KEY (actor_id)  -- 移除了多余的逗号
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE TAGS (
    tag_id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
    tag_name VARCHAR(25) NOT NULL,
    PRIMARY KEY (tag_id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE FILES (
    files_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    files_name VARCHAR(45) NOT NULL,
    uploaded_on DATETIME NOT NULL,
    PRIMARY KEY (files_id),
    actor_id SMALLINT UNSIGNED NOT NULL,
    KEY idx_fk_actor_id (actor_id),
    CONSTRAINT `fk_files_actors` FOREIGN KEY (actor_id) REFERENCES ACTORS(actor_id) ON DELETE RESTRICT ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE FILESTAG (
    files_tag_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
    tag_id SMALLINT UNSIGNED NOT NULL,
    files_id SMALLINT UNSIGNED NOT NULL,
    PRIMARY KEY (files_tag_id),  -- 添加了缺失的逗号
    KEY idx_fk_tag_id (tag_id),
    KEY idx_fk_files_id (files_id),
    CONSTRAINT `fk_files_tags` FOREIGN KEY (tag_id) REFERENCES TAGS (tag_id) ON DELETE RESTRICT ON UPDATE CASCADE,
    CONSTRAINT `fk_tags_files` FOREIGN KEY (files_id) REFERENCES FILES (files_id) ON DELETE RESTRICT ON UPDATE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:15:40