2016-01-09 3 views
1

Успех в создании таблицы без ENUM, с ним я получаю это исключение с использованием БД Derby в JavaSQL Ошибка синтаксиса в JDBC при создании таблицы с ENUM

Statement stmt = con.createStatement(); 
String sql = "CREATE TABLE Coupon (ID BIGINT, TITLE VARCHAR(100), START_DATE DATE, END_DATE DATE, AMOUNT INTEGER, " 
+ " TYPE ENUM('Electronics','Health','Beauty','Restaurants','Leisure','Travel')," 
+ " MESSAGE VARCHAR(40), PRICE DOUBLE, IMAGE VARCHAR(100),PRIMARY KEY(ID))"; 
stmt.executeUpdate(sql); 

НА ИСКЛЮЧЕНИЕ:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "(" at line 1, column 113. 
at org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source) 
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source) 
at org.apache.derby.client.am.ClientStatement.executeUpdate(Unknown Source) 
at a.creatingTables.BuildCouponTable.main(BuildCouponTable.java:27) 
Caused by: ERROR 42X01: Syntax error: Encountered "(" at line 1, column 113. 
at org.apache.derby.client.am.ClientStatement.completeSqlca(Unknown Source) 
at org.apache.derby.client.am.ClientStatement.completeExecuteImmediate(Unknown Source) 
at org.apache.derby.client.net.NetStatementReply.parseEXCSQLIMMreply(Unknown Source) 
at org.apache.derby.client.net.NetStatementReply.readExecuteImmediate(Unknown Source) 
at org.apache.derby.client.net.StatementReply.readExecuteImmediate(Unknown Source) 
at org.apache.derby.client.net.NetStatement.readExecuteImmediate_(Unknown Source) 
at org.apache.derby.client.am.ClientStatement.readExecuteImmediate(Unknown Source) 
at org.apache.derby.client.am.ClientStatement.flowExecute(Unknown Source) 
at org.apache.derby.client.am.ClientStatement.executeUpdateX(Unknown Source) 
... 2 more 
+0

Что такое TYPE ENUM? – Abdelhak

+0

ТИП - это Идентификатор, объяснение ENUM: https://en.wikipedia.org/wiki/Enumerated_type – Arthur

+1

Проблема заключается в том, что серверу базы данных не нравится ваш sql. Попробуйте найти правильный синтаксис для поставщика базы данных. – Dima

ответ

0

Попробуйте использовать этот запрос, добавив size вместо type так:

String sql = "CREATE TABLE Coupon (ID BIGINT, TITLE VARCHAR(100), START_DATE DATE, END_DATE DATE, AMOUNT INTEGER, " 
+ " size ENUM('Electronics','Health','Beauty','Restaurants','Leisure','Travel')," 
+ " MESSAGE VARCHAR(40), PRICE DOUBLE, IMAGE VARCHAR(100),PRIMARY KEY(ID))"; 
Смежные вопросы