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

MySQL创建表时Error Code:1064报错求助,求排查错误及原因

解决MySQL建表Error Code:1064的问题

嘿,作为新手碰到1064错误太正常啦,这个错误本质就是SQL语法出了问题,我帮你扒了下你的建表语句,核心问题就出在外键的定义上:

你写的FOREIGN KEY(customerNumber)是不完整的语法——外键必须明确指定要关联的「其他表的对应字段」,但你只写了当前表的字段,MySQL完全不知道你要关联哪个表,直接就报错了。

再结合你说的“库内无其他表”,大概率你现在根本不需要这个外键(毕竟没表可关联嘛),所以最简单的修正就是删掉这个半截的外键语句。

修正后的建表语句(去掉多余外键)

CREATE TABLE Customers( 
    customerNumber INT NOT NULL, 
    firstName VARCHAR(60), 
    lastName VARCHAR(60), 
    address VARCHAR(50) NOT NULL, 
    city VARCHAR(20) NOT NULL, 
    state ENUM('QLD','VIC','NSW','WA','TAS','NT','SA') NOT NULL, 
    postCode INT(4) NOT NULL, 
    region VARCHAR(60), 
    email VARCHAR(254), 
    PRIMARY KEY(customerNumber)
);

额外小提醒(可选优化)

看你的state是澳大利亚的州缩写,那postCode用INT(4)可能有点坑——澳大利亚有些邮政编码带前导零(比如0800),INT类型会自动丢掉前导零,导致数据不准确。建议改成CHAR(4)或者VARCHAR(4)类型,这样能完整保留编码格式。

如果后续需要加外键

要是之后你创建了关联表(比如订单表Orders),想给customerNumber加外键,语法得这么写(假设Orders表也有customerNumber字段):

CREATE TABLE Customers( 
    customerNumber INT NOT NULL, 
    firstName VARCHAR(60), 
    lastName VARCHAR(60), 
    address VARCHAR(50) NOT NULL, 
    city VARCHAR(20) NOT NULL, 
    state ENUM('QLD','VIC','NSW','WA','TAS','NT','SA') NOT NULL, 
    postCode CHAR(4) NOT NULL, 
    region VARCHAR(60), 
    email VARCHAR(254), 
    PRIMARY KEY(customerNumber),
    FOREIGN KEY(customerNumber) REFERENCES Orders(customerNumber)
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:05:12