2017-10-17 31 views
0

我在遇到以下SQL查询时遇到了问题。当我指定tinyint作为其数据类型时,状态字段中会出现错误。我使用错误的语法吗?在MySQL 5.5.57中使用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)); 

错误

ERROR 1064(42000):你在你的SQL语法错误;检查对应于你的MySQL服务器版本在1号线

+0

不要使用'mysql'问题'SQL-server'标签。 –

+0

哎呀.. !!对不起这是我的错..!! – rahul1205

回答

0

实际上有两种语法错误

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

工作就像一个魅力..!谢谢 – rahul1205

1

使用近“状态TINYINT,created_at DATETIME,TIMESTAMP的updated_at ON UPDATE CURRENT TIM”正确的语法手册,我认为不是TINYINT是你的问题。您必须声明VARCHAR的长度为SERIAL_NUMBER:

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

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

注意,在语法错误信息的代码摘录字status之前开始,指示错误被指定的tinyint数据类型之前发生的方式。

相关问题