我遇到以下SQL查询的问题。当我将tinyint指定为其数据类型时,在status字段中出现错误。我使用了错误的语法吗?
查询
create table device_master(
id INT,
serial_number VARCHAR,
status TINYINT,
created_at DATETIME,
updated_at TIMESTAMP ON UPDATE CURRENT TIMESTAMP,
created_by INT,
updated_by INT, primary key(id));
错误
错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在'附近使用。 status TINYINT,created_at DATETIME,updated_at TIMESTAMP ON UPDATE CURRENT TIM'在第1行
答案 0 :(得分:2)
我认为不是tinyint是你的问题。您必须为serial_number声明varchar的长度:
create table device_master(
id INT,
serial_number VARCHAR(100),
status TINYINT,
created_at DATETIME,
updated_at TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_by INT,
updated_by INT, primary key(id));
答案 1 :(得分:2)
不,问题是您没有指定serial_number
字段的长度。它应该定义为serial_number VARCHAR(N),
,其中N是字符的最大长度。
请注意,语法错误消息中的代码摘录在单词status
之前开始,表示在指定tinyint
数据类型之前发生了错误。
答案 2 :(得分:1)
实际上有两个语法错误
VARCHAR(255)
ON UPDATE CURRENT_TIMESTAMP
(注意_)尝试跑步:
create table device_master(
id INT,
serial_number VARCHAR(255),
status TINYINT,
created_at DATETIME,
updated_at TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_by INT,
updated_by INT,
primary key(id)
);