繁体   English   中英

创建表语法错误

[英]Create Table Syntax Error

我收到了一个 MySQL 数据转储,并试图将数据插入到一组临时表中。 第一个表的创建语句如下所示。 当我运行它时,我收到错误消息:“ You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''temp_books'( 'ID'int( 11 ) NOT NULL AUTO_INCREMENT, 'start'varchar( 20 ) ' at line 1 "。我已经检查了 MySQL 语法的文档,但我没有看到问题所在。

CREATE TABLE 'temp_books' (
  'ID' int(11) NOT NULL AUTO_INCREMENT,
  'start' varchar(20) NOT NULL,
  'customer_id' int(11) NOT NULL DEFAULT '0',
  'total_num' int(11) NOT NULL,
  'amount' double(5,2) NOT NULL DEFAULT '0.00',
  'changed' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY ('ID'),
  UNIQUE KEY 'start' ('start')
) ENGINE=MyISAM AUTO_INCREMENT=4853 DEFAULT CHARSET=latin1;

你不应该在你的标识符上加上单引号。 如果您要引用它们,请使用“反勾号”字符(“`”)。 您也可以使用双引号,但必须指定该模式:

SET sql_mode='ANSI_QUOTES';

http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

我总是遇到 CREATE TABLE 的问题。 不知道为什么。 需要一些反复试验。

试试这个:

CREATE TABLE temp_books (
  ID int(11) NOT NULL AUTO_INCREMENT,
  start varchar(20) NOT NULL,
  customer_id int(11) NOT NULL DEFAULT '0',
  total_num int(11) NOT NULL,
  amount double(5,2) NOT NULL DEFAULT '0.00',
  changed timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (ID),
  UNIQUE KEY start (start)
) ENGINE=MyISAM AUTO_INCREMENT=4853 DEFAULT CHARSET=latin1;

我不得不删除引号,以及已更改字段的默认值以及默认字符集。 希望不会影响数据。

这是另一种可能适用于某些人的写法:(为了简洁起见,省略了大部分列)

create table temp_books
(
id int not null,
start varchar(255) null,
constraint six_cb_datasource_pk
    primary key (id)
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM