[英]Spring jpa spring.jpa.hibernate.ddl-auto:create ORA-02000: missing ALWAYS keyword
[英]SQL Error: ORA-02000: missing ALWAYS keyword when create identity column based table
我嘗試在表上創建一個自動遞增列,正如我在這篇文章中看到的,有兩種方法,使用 Identity 列的第二個實現是一個更優雅的解決方案,但是當我嘗試實現它時,我收到以下錯誤:
Error at Command Line : 3 Column : 31
Error report -
SQL Error: ORA-02000: missing ALWAYS keyword
02000. 00000 - "missing %s keyword"
實際表腳本實現:
CREATE TABLE "PLATFORM"."AUTH_PERMISSION"
(
ID NUMBER(19,0) GENERATED BY DEFAULT ON NULL AS IDENTITY,
-- ID NUMBER(19,0) PRIMARY KEY NOT NULL,
NAME VARCHAR2(50) UNIQUE NOT NULL,
ACTION_ID NUMBER(19,0) NOT NULL,
RESOURCE_ID NUMBER(19,0) NOT NULL,
ENVIRONMENT_ID NUMBER(19,0) NOT NULL,
CONSTRAINT "ACTION_ID" FOREIGN KEY ("ACTION_ID")
REFERENCES "AUTH_ACTION" ("ID") ENABLE,
CONSTRAINT "ENVIRONMENT_ID" FOREIGN KEY ("ENVIRONMENT_ID")
REFERENCES "AUTH_ENVIRONMENT" ("ID") ENABLE,
CONSTRAINT "RESOURCE_ID" FOREIGN KEY ("RESOURCE_ID")
REFERENCES "AUTH_RESOURCE" ("ID") ENABLE,
UNIQUE (ACTION_ID, ENVIRONMENT_ID, RESOURCE_ID)
);
可以看出,我嘗試自動遞增的列是表的主鍵。
這是我得到解決方案的參考。
問題是我使用了舊版本的 Oracle,11g。
也許您嘗試連接的 Oracle 數據庫(服務器)是12c ,但是您使用的客戶端(本地安裝)不支持該功能。 請檢查您的Oracle 客戶端版本,它可能是不支持它的11g 或更低版本。 您需要下載更高的客戶端版本。
在版本12.1.0.1上完美運行。
SQL> select banner from v$version where rownum = 1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
SQL> CREATE TABLE AUTH_PERMISSION
2 (
3 ID NUMBER(19,0) GENERATED BY DEFAULT ON NULL AS IDENTITY,
4 -- ID NUMBER(19,0) PRIMARY KEY NOT NULL,
5 NAME VARCHAR2(50) UNIQUE NOT NULL,
6 ACTION_ID NUMBER(19,0) NOT NULL,
7 RESOURCE_ID NUMBER(19,0) NOT NULL,
8 ENVIRONMENT_ID NUMBER(19,0) NOT NULL
9 );
Table created.
我遇到了同樣的錯誤,但是當我嘗試在編輯器中作為腳本運行時,它起作用了。 我后來粘貼在 .sql 文件中以運行腳本@<path>\\<filename>
代碼:
CREATE TABLE TESTING(
ID NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
NAME VARCHAR2(20)
);
這對我有用。 我使用的是 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64 位生產 PL/SQL Release 12.2.0.1.0
你也可以嘗試:
CREATE TABLE TESTING(
ID NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY(START WITH 101 MAXVALUE 9999999
MINVALUE 1 NOCYCLE CACHE 20) NOT NULL,
NAME VARCHAR2(20)
);
開始於:是從你想要開始你的計數器的地方(我用了 101) maxvalue 是直到它應該增加的值 minvalue 是由 nocycle 增加的 cashe 是你想在 ram 中保留多少數字
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.