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

时间:2017-10-17 12:21:57

标签: mysql

我遇到以下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行

3 个答案:

答案 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)

实际上有两个语法错误

  1. 您必须指定varchar的最大长度,例如VARCHAR(255)
  2. ON UPDATE CURRENT_TIMESTAMP(注意_)
  3. 尝试跑步:

    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)
    );