MySQL导入SQL遇#1063错误:Date列规格错误的原因及解决
解决MySQL #1063错误:Date列的自增与约束问题
嘿,我来帮你拆解这个问题——你遇到的#1063错误本质是对MySQL数据类型和约束规则的误解,咱们一步步理清楚:
错误核心原因
咱们先揪出触发#1063的直接原因,顺便看看其他隐藏的问题:
- DATE类型不能用AUTO_INCREMENT:MySQL的自增特性(
AUTO_INCREMENT)仅支持整数类型(如INT、BIGINT、SMALLINT),日期类型根本不支持自动生成递增的日期值,这就是报错的根源。 - 外键语法写错了:你直接在列定义前加
FOREIGN KEY是错误的,正确姿势是先定义列,再单独声明外键约束。 - 主键设计不合理:用
Date作为Direct_hours和Indirect_hours的主键完全行不通——一个员工同一天可能有好几条工时记录,主键必须保证每条记录唯一,所以得换个思路。
修正方案(附完整修正后的SQL)
首先明确:你要存储YYYY/MM/DD格式的日期,MySQL的DATE类型本身就是按YYYY-MM-DD存储的,查询时用函数转成YYYY/MM/DD就行,不用修改列的存储类型。咱们逐个表修正:
1. 修正Direct_hours表
原来的写法错在给Date加了自增,还乱加外键前缀,修正后:
CREATE TABLE Direct_hours ( Hour_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -- 新增自增主键,唯一标识每条记录 Date DATE NOT NULL, -- 只保留DATE类型,去掉AUTO_INCREMENT Employee_number INT NOT NULL, Project_number INT NOT NULL, -- 单独声明外键约束 FOREIGN KEY (Employee_number) REFERENCES Employee(Employee_number), FOREIGN KEY (Project_number) REFERENCES Project(Project_number) );
2. 修正Indirect_hours表
和上面同理,去掉Date的自增,新增自增主键,修正外键:
CREATE TABLE Indirect_hours ( Hour_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Date DATE NOT NULL, Employee_number INT NOT NULL, Type VARCHAR(255) NOT NULL, Number INT NOT NULL, FOREIGN KEY (Employee_number) REFERENCES Employee(Employee_number) );
3. 修正其他表的外键错误
你的Skilllevel和Project表也犯了同样的外键语法错误,修正后的写法如下:
Skilllevel表
CREATE TABLE Skilllevel ( Levels TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY, Employee_number INT NOT NULL, -- 先定义列 Description VARCHAR(255) NOT NULL, Hourly_rate TINYINT NOT NULL, FOREIGN KEY (Employee_number) REFERENCES Employee(Employee_number) -- 再声明外键 );
Project表
CREATE TABLE Project ( Project_number INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Employee_number INT NOT NULL, Customer_number INT NOT NULL, Hourly_rate TINYINT NOT NULL, FOREIGN KEY (Employee_number) REFERENCES Employee(Employee_number), FOREIGN KEY (Customer_number) REFERENCES Customer(Customer_number) );
关于日期格式的小技巧
如果想把查询结果里的日期显示成YYYY/MM/DD,不用修改存储格式,用DATE_FORMAT函数转换即可:
SELECT DATE_FORMAT(Date, '%Y/%m/%d') AS formatted_date FROM Direct_hours;
内容的提问来源于stack exchange,提问作者Je Boy Abi
相关产品推荐
相关产品推荐

