为什么我的数据库表中存在语法错误?

时间:2019-05-13 03:26:56

标签: mysql

我想创建一个tb_order数据库表,但是我不知道哪种代码格式是错误的。

CREATE TABLE tb_order (
id INT(11) NOT NULL AUTO_INCREMENT,
user_id INT(11) DEFAULT NULL,
order_number VARCHAR(255) DEFAULT NULL,
CREATE DATETIME DEFAULT NULL,
updated DATETIME DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT  
CHARSET=utf8;

显示错误消息

  

查询:CREATE TABLE tb_order(id int(11)NOT NULL AUTO_INCREMENT,   user_id int(11)默认为空,order_number varchar(255)默认   NULL ...错误代码:1064您的SQL语法错误;校验   与您的MySQL服务器版本相对应的手册   在'create datetime DEFAULT NULL,更新的datetime附近使用的语法   第5行执行时间的默认值NULL,主键(id))':   00:00:00:000传输时间:00:00:00:000总时间:   00:00:00:000

3 个答案:

答案 0 :(得分:6)

2018-01-01T00:00:00.0000000是保留关键字。用反引号将其引用,或使用其他列名。

答案 1 :(得分:2)

您已使用MySQL关键字作为列名。 我已经在代码中提到了这一点。看看。

CREATE TABLE tb_order (
id INT(11) NOT NULL AUTO_INCREMENT,
user_id INT(11) DEFAULT NULL,
order_number VARCHAR(255) DEFAULT NULL,
some_other_coloumn_name DATETIME DEFAULT NULL,
updated DATETIME DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT  
CHARSET=utf8;

答案 2 :(得分:1)

尝试-

请更改列名,将create replace更改为create_db,同时也更新为update_db

CREATE TABLE `tb_order` (
  `id` int(11) NOT NULL,
  `user_id` int(11) DEFAULT NULL,
  `order_number` varchar(255) DEFAULT NULL,
  `create_db` datetime(6) DEFAULT NULL,
  `updated_db` datetime(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `tb_order`
--
ALTER TABLE `tb_order`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `tb_order`
--
ALTER TABLE `tb_order`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;