Oracle11g 使用Oracle for jhipster应用程序时无法初始化数据库
我试图在生产模式下使用Oracle数据库进行jhipster开发。 我的数据库配置是Oracle11g 使用Oracle for jhipster应用程序时无法初始化数据库,oracle11g,jhipster,Oracle11g,Jhipster,我试图在生产模式下使用Oracle数据库进行jhipster开发。 我的数据库配置是 profiles: active: prod datasource: driverClassName: oracle.jdbc.OracleDriver dataSourceClassName: oracle.jdbc.pool.OracleDataSource url: jdbc:oracle:thin:@127.0.01:49161:xe databaseName:
profiles:
active: prod
datasource:
driverClassName: oracle.jdbc.OracleDriver
dataSourceClassName: oracle.jdbc.pool.OracleDataSource
url: jdbc:oracle:thin:@127.0.01:49161:xe
databaseName:
serverName:
username: vpp_owner
password: vpp_owner
jpa:
database-platform: org.hibernate.dialect.Oracle10GDialect
database: ORACLE
openInView: false
show_sql: true
generate-ddl: false
hibernate:
ddl-auto: none
naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
properties:
hibernate.cache.use_second_level_cache: true
hibernate.cache.use_query_cache: false
hibernate.generate_statistics: false
hibernate.cache.region.factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
Oracle服务器已启动并正在运行,我可以使用给定的凭据连接到数据库。
在mvn-Pprod-mvn引导之后:run我得到了以下SQLException
Caused by: liquibase.exception.DatabaseException: ORA-00984: column not allowed here
[Failed SQL: CREATE TABLE VPP_OWNER.JHI_USER (id NUMBER(38, 0) DEFAULT SEQ_USER.NEXTVAL NOT NULL, login VARCHAR2(50) NOT NULL, "PASSWORD" VARCHAR2(60), first_n
ame VARCHAR2(50), last_name VARCHAR2(50), email VARCHAR2(100), activated NUMBER(1) NOT NULL, lang_key VARCHAR2(5), activation_key VARCHAR2(20), reset_key VARCHA
R2(20), created_by VARCHAR2(50) NOT NULL, created_date TIMESTAMP DEFAULT sysdate NOT NULL, reset_date TIMESTAMP, last_modified_by VARCHAR2(50), last_modified_da
te TIMESTAMP, CONSTRAINT PK_JHI_USER PRIMARY KEY (id), UNIQUE (email), UNIQUE (login))]
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:316)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55)
at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:122)
at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1247)
at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1230)
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:548)
... 115 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-00984: column not allowed here
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:30)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:931)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1150)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1792)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1745)
at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:334)
at com.zaxxer.hikari.proxy.StatementProxy.execute(StatementProxy.java:83)
at com.zaxxer.hikari.proxy.StatementJavassistProxy.execute(StatementJavassistProxy.java)
at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:314)
... 120 more
问题似乎是默认的SEQ_USER.NEXTVAL NOT NULL表达式
有什么迹象表明帽子出毛病了吗
我正在使用jhipster 2.19.0和Oracle 11g。这在Oracle 11g中是不可能的 从这里的文档: 默认表达式不能包含对PL/SQL函数或 对于其他列,可以使用伪列CURRVAL、NEXTVAL、LEVEL、previor、, 和ROWNUM,或未完全指定的日期常量 此类语句仅适用于Oracle 12c或更高版本:
这在Oracle 11g中是不可能的 从这里的文档: 默认表达式不能包含对PL/SQL函数或 对于其他列,可以使用伪列CURRVAL、NEXTVAL、LEVEL、previor、, 和ROWNUM,或未完全指定的日期常量 此类语句仅适用于Oracle 12c或更高版本:
当我对生成的源应用一些更改时,我可以使用11G数据库
这可能包括在jhipster生成器中?当我对生成的源应用一些更改时,我可以使用11G数据库
这可能包括在jhipster生成器中吗?正如@Moh-Aw所说,它与Oracle 12c或更高版本一起工作。对于不支持计算默认值的早期版本,可以使用触发器。 这里有一个补丁
diff --git a/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml b/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml
index dbdae03..702d0ba 100644
--- a/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml
+++ b/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml
@@ -22,7 +22,7 @@
<changeSet id="00000000000001" author="jhipster">
<createSequence sequenceName="SEQ_USER" startValue="1000" incrementBy="1"/>
<createTable tableName="JHI_USER">
- <column name="id" type="bigint" autoIncrement="${autoIncrement}" defaultValueComputed="SEQ_USER.NEXTVAL">
+ <column name="id" type="bigint" autoIncrement="${autoIncrement}">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="login" type="varchar(50)">
@@ -52,7 +52,7 @@
<column name="last_modified_by" type="varchar(50)"/>
<column name="last_modified_date" type="timestamp"/>
</createTable>
-
+
<createTable tableName="JHI_AUTHORITY">
<column name="name" type="varchar(50)">
<constraints primaryKey="true" nullable="false"/>
@@ -119,10 +119,10 @@
file="config/liquibase/users_authorities.csv"
separator=";"
tableName="JHI_USER_AUTHORITY"/>
-
+
<createSequence sequenceName="SEQ_PERSISTENT_AUDIT_EVENT" startValue="1000" incrementBy="1"/>
<createTable tableName="JHI_PERSISTENT_AUDIT_EVENT">
- <column name="event_id" type="bigint" autoIncrement="${autoIncrement}" defaultValueComputed="SEQ_PERSISTENT_AUDIT_EVENT.NEXTVAL">
+ <column name="event_id" type="bigint" autoIncrement="${autoIncrement}" >
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="principal" type="varchar(255)">
@@ -162,5 +162,37 @@
referencedColumnNames="event_id"
referencedTableName="JHI_PERSISTENT_AUDIT_EVENT"/>
</changeSet>
-
+
+ <changeSet id="defaultValueComputedOnAutoIncrementFields" author="cirovladimir" dbms="mysql,h2,postgresql">
+ <addDefaultValue tableName="JHI_USER"
+ columnName="id" columnDataType="bigint" defaultValueComputed="SEQ_USER.NEXTVAL"/>
+ <addDefaultValue tableName="JHI_PERSISTENT_AUDIT_EVENT"
+ columnName="event_id" columnDataType="bigint" defaultValueComputed="SEQ_PERSISTENT_AUDIT_EVENT.NEXTVAL"/>
+ </changeSet>
+
+ <changeSet id="triggerOnAutoIncrementFields" author="cirovladimir" dbms="oracle">
+ <createProcedure>
+ CREATE OR REPLACE TRIGGER TRG_JHI_USER_ID
+ BEFORE INSERT
+ ON JHI_USER
+ FOR EACH ROW
+ DECLARE
+ BEGIN
+ SELECT SEQ_USER.NEXTVAL INTO :NEW.ID FROM DUAL;
+ END TRG_JHI_USER_ID;
+ </createProcedure>
+ <createProcedure>
+ CREATE OR REPLACE TRIGGER TRG_PERSISTENT_AUDIT_EVENT_ID
+ BEFORE INSERT
+ ON JHI_PERSISTENT_AUDIT_EVENT
+ FOR EACH ROW
+ DECLARE
+ BEGIN
+ SELECT SEQ_PERSISTENT_AUDIT_EVENT.NEXTVAL INTO :NEW.EVENT_ID FROM DUAL;
+ END TRG_PERSISTENT_AUDIT_EVENT_ID;
+ </createProcedure>
+ </changeSet>
+
+
+
</databaseChangeLog>
diff--git a/src/main/resources/config/liquibase/changelog/00000000000000\u initial\u schema.xml b/src/main/resources/config/liquibase/changelog/00000000000000000000\u initial\u schema.xml
索引dbdae03..702d0ba 100644
---a/src/main/resources/config/liquibase/changelog/00000000000000\u initial\u schema.xml
+++b/src/main/resources/config/liquibase/changelog/00000000000000\u initial\u schema.xml
@@ -22,7 +22,7 @@
-
+
@@ -52,7 +52,7 @@
-
+
@@ -119,10 +119,10 @@
file=“config/liquibase/users\u authorities.csv”
分隔符=“;”
tableName=“JHI\U用户\U权限”/>
-
+
-
+
@@ -162,5 +162,37 @@
referencedColumnNames=“事件\u id”
referencedTableName=“JHI\U持久性\U审计\U事件”/>
-
+
+
+
+
+
+
+
+
+创建或替换触发器TRG_JHI_用户ID
+插入前
+关于JHI_用户
+每行
+申报
+开始
+选择SEQ_USER.NEXTVAL to:NEW.ID FROM DUAL;
+结束训练JHI用户ID;
+
+
+创建或替换触发器TRG\u PERSISTENT\u AUDIT\u EVENT\u ID
+插入前
+论JHI_持续审计事件
+每行
+申报
+开始
+选择SEQ_PERSISTENT_AUDIT_EVENT.NEXTVAL to:NEW.EVENT_ID FROM DUAL;
+结束训练\u持续\u审核\u事件\u ID;
+
+
+
+
+
正如@Moh-Aw所说,它适用于Oracle 12c或更高版本。对于不支持计算默认值的早期版本,可以使用触发器。
这里有一个补丁
diff --git a/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml b/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml
index dbdae03..702d0ba 100644
--- a/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml
+++ b/src/main/resources/config/liquibase/changelog/00000000000000_initial_schema.xml
@@ -22,7 +22,7 @@
<changeSet id="00000000000001" author="jhipster">
<createSequence sequenceName="SEQ_USER" startValue="1000" incrementBy="1"/>
<createTable tableName="JHI_USER">
- <column name="id" type="bigint" autoIncrement="${autoIncrement}" defaultValueComputed="SEQ_USER.NEXTVAL">
+ <column name="id" type="bigint" autoIncrement="${autoIncrement}">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="login" type="varchar(50)">
@@ -52,7 +52,7 @@
<column name="last_modified_by" type="varchar(50)"/>
<column name="last_modified_date" type="timestamp"/>
</createTable>
-
+
<createTable tableName="JHI_AUTHORITY">
<column name="name" type="varchar(50)">
<constraints primaryKey="true" nullable="false"/>
@@ -119,10 +119,10 @@
file="config/liquibase/users_authorities.csv"
separator=";"
tableName="JHI_USER_AUTHORITY"/>
-
+
<createSequence sequenceName="SEQ_PERSISTENT_AUDIT_EVENT" startValue="1000" incrementBy="1"/>
<createTable tableName="JHI_PERSISTENT_AUDIT_EVENT">
- <column name="event_id" type="bigint" autoIncrement="${autoIncrement}" defaultValueComputed="SEQ_PERSISTENT_AUDIT_EVENT.NEXTVAL">
+ <column name="event_id" type="bigint" autoIncrement="${autoIncrement}" >
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="principal" type="varchar(255)">
@@ -162,5 +162,37 @@
referencedColumnNames="event_id"
referencedTableName="JHI_PERSISTENT_AUDIT_EVENT"/>
</changeSet>
-
+
+ <changeSet id="defaultValueComputedOnAutoIncrementFields" author="cirovladimir" dbms="mysql,h2,postgresql">
+ <addDefaultValue tableName="JHI_USER"
+ columnName="id" columnDataType="bigint" defaultValueComputed="SEQ_USER.NEXTVAL"/>
+ <addDefaultValue tableName="JHI_PERSISTENT_AUDIT_EVENT"
+ columnName="event_id" columnDataType="bigint" defaultValueComputed="SEQ_PERSISTENT_AUDIT_EVENT.NEXTVAL"/>
+ </changeSet>
+
+ <changeSet id="triggerOnAutoIncrementFields" author="cirovladimir" dbms="oracle">
+ <createProcedure>
+ CREATE OR REPLACE TRIGGER TRG_JHI_USER_ID
+ BEFORE INSERT
+ ON JHI_USER
+ FOR EACH ROW
+ DECLARE
+ BEGIN
+ SELECT SEQ_USER.NEXTVAL INTO :NEW.ID FROM DUAL;
+ END TRG_JHI_USER_ID;
+ </createProcedure>
+ <createProcedure>
+ CREATE OR REPLACE TRIGGER TRG_PERSISTENT_AUDIT_EVENT_ID
+ BEFORE INSERT
+ ON JHI_PERSISTENT_AUDIT_EVENT
+ FOR EACH ROW
+ DECLARE
+ BEGIN
+ SELECT SEQ_PERSISTENT_AUDIT_EVENT.NEXTVAL INTO :NEW.EVENT_ID FROM DUAL;
+ END TRG_PERSISTENT_AUDIT_EVENT_ID;
+ </createProcedure>
+ </changeSet>
+
+
+
</databaseChangeLog>
diff--git a/src/main/resources/config/liquibase/changelog/00000000000000\u initial\u schema.xml b/src/main/resources/config/liquibase/changelog/00000000000000000000\u initial\u schema.xml
索引dbdae03..702d0ba 100644
---a/src/main/resources/config/liquibase/changelog/00000000000000\u initial\u schema.xml
+++b/src/main/resources/config/liquibase/changelog/00000000000000\u initial\u schema.xml
@@ -22,7 +22,7 @@
-
+
@@ -52,7 +52,7 @@
-
+
@@ -119,10 +119,10 @@
file=“config/liquibase/users\u authorities.csv”
分隔符=“;”
tableName=“JHI\U用户\U权限”/>
-
+
-
+
@@ -162,5 +162,37 @@
referencedColumnNames=“事件\u id”
referencedTableName=“JHI\U持久性\U审计\U事件”/>
-
+
+
+
+
+
+
+
+
+创建或替换触发器TRG_JHI_用户ID
+插入前
+关于JHI_用户
+每行
+申报
+开始
+选择SEQ_USER.NEXTVAL to:NEW.ID FROM DUAL;
+结束训练JHI用户ID;
+
+
+创建或替换触发器TRG\u PERSISTENT\u AUDIT\u EVENT\u ID
+插入前
+论JHI_持续审计事件