java.sql.SQLSyntaxErrorException:意外令牌:([关闭]
Posted
技术标签:
【中文标题】java.sql.SQLSyntaxErrorException:意外令牌:([关闭]【英文标题】:java.sql.SQLSyntaxErrorException: unexpected token: ( [closed] 【发布时间】:2018-07-02 09:54:26 【问题描述】:对不起,我的英语不好,我是法国人 我需要一点帮助:-)
我有一个java.sql.SQLSyntaxErrorException
,但我找不到发生了什么。
这是踪迹:
org.springframework.jdbc.datasource.init.ScriptStatementFailedException:
Failed to execute SQL script statement #1 of class path resource
[ddl/ddl-table.sql]: CREATE TABLE user_klesia(noss varchar(15),email
varchar(45),tel_fixe varchar(20),tel_mobile varchar(20)
,statut_consentement varchar(20) ,consentement_offres_date timestamp
NULL,certification_date timestamp NULL,derniere_tentative_date
timestamp NULL,id_web bigint(20) NOT NULL AUTO_INCREMENT,certifie
int(1) DEFAULT '0',date_naissance date ,origine varchar(2) DEFAULT
'K',question_secrete varchar(45),reponse_secrete
varchar(45),liferay_user_id bigint(20),nom varchar(200),prenom
varchar(200),indicateur_tel_fixe varchar(20),code_pays_fixe
varchar(4),indicateur_tel_mobile varchar(20),code_pays_mobile
varchar(4),civilite varchar(15),id_indv_ur
bigint(20),blocage_compte_date timestamp NULL,nb_tentatives
int(1),id_indv_alloc bigint(20),question_certifiante varchar(200)
,reponse_certifiante varchar(200) ,mode_certification varchar(20)
,otp_certifiant varchar(10) ,email_date_maj timestamp NULL
,tel_fixe_date_maj timestamp NULL ,tel_mobile_date_maj timestamp NULL
,id_individu bigint(20),france_connect varchar(45) ,sub varchar(255)
,sso_ima int(1),PRIMARY KEY (id_web)); nested exception is
java.sql.SQLSyntaxErrorException: unexpected token: (
at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:492)
at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.populate(ResourceDatabasePopulator.java:240)
at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute(DatabasePopulatorUtils.java:48)
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory.initDatabase(EmbeddedDatabaseFactory.java:200)
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory.getDatabase(EmbeddedDatabaseFactory.java:157)
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder.build(EmbeddedDatabaseBuilder.java:270)
at fr.koudama.batch.excellent.test.launchJob(test.java:82)
这是我的 SQL 语句:
CREATE TABLE user_klesia(noss varchar(15),
email varchar(45),
tel_fixe varchar(20),
tel_mobile varchar(20),
statut_consentement varchar(20),
consentement_offres_date timestamp NULL,
certification_date timestamp NULL,
derniere_tentative_date timestamp NULL,
id_web bigint(20) NOT NULL AUTO_INCREMENT,
certifie int(1) DEFAULT '0',
date_naissance date,
origine varchar(2) DEFAULT 'K',
question_secrete varchar(45),
reponse_secrete varchar(45),
liferay_user_id bigint(20),
nom varchar(200),
prenom varchar(200),
indicateur_tel_fixe varchar(20),
code_pays_fixe varchar(4),
indicateur_tel_mobile varchar(20),
code_pays_mobile varchar(4),
civilite varchar(15),
id_indv_ur bigint(20),
blocage_compte_date timestamp NULL,
nb_tentatives int(1),
id_indv_alloc bigint(20),
question_certifiante varchar(200),
reponse_certifiante varchar(200),
mode_certification varchar(20),
otp_certifiant varchar(10),
email_date_maj timestamp NULL,
tel_fixe_date_maj timestamp NULL,
tel_mobile_date_maj timestamp NULL,
id_individu bigint(20),
france_connect varchar(45),
sub varchar(255),
sso_ima int(1),
PRIMARY KEY (id_web));
【问题讨论】:
你用的是什么数据库? 我正在使用 HSQL 数据库 我认为 AUTO_INCREMENT 在这种情况下无效,this answer 可能有帮助吗? 约翰 M 是对的。此外,HSQL 似乎不允许您在 int 和 bigint 字段中指定长度。那是定义字段 id_web 的行中的意外令牌“(”。 好的,我要解决这个问题 【参考方案1】:您的 DDL 有一些问题:
bigint
和 int
不能有大小。您需要将bigint(20)
更改为bigint
,将int(1)
更改为int
。
auto_increment
不存在,但实现为 identity
。
我修复了您的 SQL 并在 HyperSQL 2.3.4 中对其进行了测试。现在效果很好:
CREATE TABLE user_klesia (
noss varchar(15),
email varchar(45),
tel_fixe varchar(20),
tel_mobile varchar(20) ,
statut_consentement varchar(20) ,
consentement_offres_date timestamp NULL,
certification_date timestamp NULL,
derniere_tentative_date timestamp NULL,
id_web bigint identity NOT NULL,
certifie int DEFAULT '0',
date_naissance date ,
origine varchar(2) DEFAULT 'K',
question_secrete varchar(45),
reponse_secrete varchar(45),
liferay_user_id bigint,
nom varchar(200),
prenom varchar(200),
indicateur_tel_fixe varchar(20),
code_pays_fixe varchar(4),
indicateur_tel_mobile varchar(20),
code_pays_mobile varchar(4),
civilite varchar(15),
id_indv_ur bigint,
blocage_compte_date timestamp NULL,
nb_tentatives int,
id_indv_alloc bigint,
question_certifiante varchar(200) ,
reponse_certifiante varchar(200) ,
mode_certification varchar(20) ,
otp_certifiant varchar(10) ,
email_date_maj timestamp NULL ,
tel_fixe_date_maj timestamp NULL ,
tel_mobile_date_maj timestamp NULL ,
id_individu bigint,
france_connect varchar(45),
sub varchar(255),
sso_ima int,
PRIMARY KEY (id_web)
);
【讨论】:
谢谢它的工作!!!!以上是关于java.sql.SQLSyntaxErrorException:意外令牌:([关闭]的主要内容,如果未能解决你的问题,请参考以下文章