【问题标题】:Having an error in sql while creating table创建表时sql出错
【发布时间】:2017-07-16 07:45:25
【问题描述】:

我正在尝试在我的数据库上创建一个表。这是错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ') NOT NULL , `ctc` DOUBLE(5) NOT NULL , `ref` VARCHAR(50) NOT NULL , `date` D' at line 1

我的查询:

CREATE TABLE `job`.`form_details` ( 
    `email_id` VARCHAR(50) NOT NULL , 
    `name` VARCHAR(50) NOT NULL , 
    `number` VARCHAR(14) NOT NULL , 
    `city` VARCHAR(50) NOT NULL , 
    `skill` VARCHAR(50) NOT NULL , 
    `qualification` VARCHAR(50) NOT NULL , 
    `position` VARCHAR(50) NOT NULL , 
    `exp` DOUBLE(5) NOT NULL , 
    `ctc` DOUBLE(5) NOT NULL , 
    `ref` VARCHAR(50) NOT NULL , 
    `date` DATE NOT NULL , 
    `time stamp` TIMESTAMP(30) NOT NULL ) ENGINE = InnoDB;

【问题讨论】:

  • 努力格式化您的查询。

标签: mysql sql syntax-error ddl create-table


【解决方案1】:

double 的精度由两个参数指定 - (M, D) - 共 M 位,小数点后 D 位。 timestamp 的精度不能大于 6。所以:

CREATE TABLE `job`.`form_details` (
 `email_id` VARCHAR(50) NOT NULL ,
 `name` VARCHAR(50) NOT NULL ,
 `number` VARCHAR(14) NOT NULL ,
 `city` VARCHAR(50) NOT NULL ,
 `skill` VARCHAR(50) NOT NULL ,
 `qualification` VARCHAR(50) NOT NULL ,
 `position` VARCHAR(50) NOT NULL ,
 `exp` DOUBLE(5, 2) NOT NULL , -- Two arguments for the double's precision
 `ctc` DOUBLE(5, 2) NOT NULL , -- Here too
 `ref` VARCHAR(50) NOT NULL ,
 `date` DATE NOT NULL ,
 `time stamp` TIMESTAMP(6) NOT NULL -- Timestamp precision capped at 6
) ENGINE = InnoDB

【讨论】:

  • time stamp 个人可以,我会避免在字段名称中使用空格。
  • @P.Salmon 我使用了 OP 的列名,只是修复了阻止语句执行的错误。但我同意在列名中包含空格可能是一种不好的做法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多