创建表时出错(MySQL)

时间:2017-04-27 19:42:18

标签: mysql

我目前在为数据库创建表时遇到一些麻烦。我不确定我错过了什么,如果有人能帮助我解决这个问题,那就太棒了!

代码:         CREATE TABLE Krenko(名称变量(50),数量INT(3),价格双倍(20),自己的INT(3),需要INT(3));

错误: 静态分析:

分析过程中发现了5个错误。

A symbol name was expected! (near "Name" at position 21)
At least one column definition was expected. (near "Name" at position 21)
Unexpected beginning of statement. (near "50" at position 34)
Unexpected beginning of statement. (near "Quantity" at position 39)
Unrecognized statement type. (near "INT" at position 48)

SQL查询:

创建表Krenko(名称变量(50),数量INT(3),价格双倍(20),自己的INT(3),需要INT(3))

MySQL说:文档

1064 - 您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在#39;),Own INT(3),Need INT(3))'之间使用正确的语法。在第1行

3 个答案:

答案 0 :(得分:0)

您以错误的方式定义Price的数据类型。而不是DOUBLE(20),使用DOUBLE(20,5)

在mysql中,DOUBLE数据类型需要0或2(长度,小数位)参数。如果提供0参数,则采用默认值16,4。阅读more

尝试以下查询:

CREATE TABLE Krenko (
  Name VARCHAR(50), 
  Quantity INT(3), 
  Price DOUBLE(20, 5), 
  Own INT(3), 
  Need INT(3)
);

答案 1 :(得分:0)

问题在于您的价格柱的声明加倍。如果要指定数字,则必须采用以下形式:DOUBLE(M,D)。
这里,(M,D)表示可以存储的值总共最多为M位,其中D位可以在小数点后面。

CREATE TABLE Krenko (Name VARCHAR(50), Quantity INT(3), Price DOUBLE(20,2), 
Own INT(3), Need INT(3));

您问题的另一个解决方案是删除数字位数的规范。

CREATE TABLE Krenko (Name VARCHAR(50), Quantity INT(3), Price DOUBLE, Own 
INT(3), Need INT(3));

答案 2 :(得分:0)

这可能有帮助:

CREATE TABLE IF NOT EXISTS 'users' (
    'username ' varchar (50) NOT NULL,
    'password' varchar (50) NOT NULL,
    'email' varchar (100) NOT NULL,
    'level' ENUM('admin','user') NOT NULL DEFAULT 'user',
    'blokir' ENUM('N','Y') NOT NULL DEFAULT 'N',
    'id_sesions'varchar (50) NOT NULL
)    ENGINE=INNODB DEFAULT charset=latin1;