繁体   English   中英

在MySQL 5.5.57中使用tinyint作为数据类型

[英]Using tinyint as datatype in MySQL 5.5.57

我在使用以下SQL查询时遇到问题。 当我将tinyint指定为其数据类型时,会在状态字段中出现错误。 我使用的语法错误吗?

询问

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语法有错误; 在第1行上,检查与您的MySQL服务器版本相对应的手册,以使用正确的语法以在'status TINYINT,created_at DATETIME,Updated_at TIMESTAMP ON UPDATE CURRENT TIM'附近使用

我认为不是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));

否,问题在于您没有为serial_number字段指定长度。 它应该定义为serial_number VARCHAR(N), ,其中N是最大字符长度。

请注意,语法错误消息中的代码摘录在单词status 之前开始,指示该错误是在指定tinyint数据类型之前发生的。

实际上有两个语法错误

  1. 您必须指定varchar的最大长度,例如VARCHAR(255)
  2. 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)
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM