我一直在使用netbeans作为我的java工具,我有一个问题。我读了this tutorial然后我尝试使用这个SQL创建一个表:
CREATE TABLE CUSTOMERS (
ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
FIRST_NAME VARCHAR(20),
LAST_NAME VARCHAR(30),
ADDRESS VARCHAR(30),
CITY VARCHAR(30),
STATE_ VARCHAR(30),
ZIP VARCHAR(15),
COUNTRY_ID INTEGER,
PHONE VARCHAR(15),
EMAIL_ADDRESS VARCHAR(50)
)ENGINE=INNODB;
当我试图运行它时,我收到此错误消息:
sql state 42X01:语法错误: 在第2行遇到“AUTO_INCREMENT” 第29栏
当我删除AUTO_INCREMENT时,另一个错误:
有人能帮帮我吗?感谢。检测到ENGINE = INNODB;
答案 0 :(得分:5)
您似乎将MySQL语法与其他数据库引擎一起使用。它抱怨的部分恰好是特定于MySQL的部分。
答案 1 :(得分:1)
我的消化将是以下
CREATE TABLE CUSTOMERS
( ID INTEGER NOT NULL auto_increment,
FIRST_NAME VARCHAR(20),
LAST_NAME VARCHAR(30),
ADDRESS VARCHAR(30),
CITY VARCHAR(30),
STATE_ VARCHAR(30),
ZIP VARCHAR(15),
COUNTRY_ID INTEGER,
PHONE VARCHAR(15),
EMAIL_ADDRESS VARCHAR(50),
PRIMARY KEY (ID));
Dunno引擎= innodb的用途是什么,你试过没有吗?
答案 2 :(得分:0)
“engine = innodb”部分指定在数据库中使用的数据库引擎。使用MySQL,您可以指定不同的引擎,如“InnoDB”,“MyISAM”等。它们具有不同的属性和功能 - 一些允许外部索引,一些不允许。有些具有不同的锁定机制,有些具有不同的原子性/回滚属性。我不知道细节,但如果你需要一个非常高性能的数据库设置,你应该调查哪个引擎最适合你正在创建的每种类型的表。此外,我所有的数据库经验都是使用MySQL,我不确定这是不是你正在使用的。
答案 3 :(得分:-1)
很长一段时间但如果有其他人像我一样偶然发现这个问题,那么对我有用的解决方案不是使用auto_increment
,而是将ID列描述为
ID INTEGER GENERATED ALWAYS AS IDENTITY, WHATEVER VARCHAR(20), ETC ETC...