我想用 CREATE 語(yǔ)句創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)表。我得到一個(gè)錯(cuò)誤說(shuō)Error: syntax error at or near "RETURNING". 我知道 JDBC 驅(qū)動(dòng)程序存在某種錯(cuò)誤。正如我發(fā)現(xiàn)的那樣。 Postgres JDBC 驅(qū)動(dòng)程序:PSQLException:RETURNING 處或附近的語(yǔ)法錯(cuò)誤看來(lái)我需要設(shè)置 Quirk 模式。但我不確定該怎么做?,F(xiàn)在我有Connection dbConnection;dbConnection = DriverManager.getConnection(connectionString,username,password);Statement st = dbConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);st.executeUpdate(query,Statement.RETURN_GENERATED_KEYS);我不知道我應(yīng)該在哪里設(shè)置怪癖模式編輯:很抱歉遺漏了細(xì)節(jié)。它帶我通過(guò)了引導(dǎo)方式。該聲明是通過(guò)st.executeUpdate(query,Statement.RETURN_GENERATED_KEYS);SQL是 String employeeTable="CREATE TABLE \"employee\" (\n" + " \"employee_id\" serial,\n" + " \"employee_first_name\" TEXT,\n" + " \"employee_middle_name\" TEXT,\n" + " \"employee_last_name\" TEXT,\n" + " \"employee_dob\" date ,\n" + " \"employee_ssn\" TEXT NOT NULL DEFAULT '0',\n" + " \"employee_wages\" FLOAT(30) NOT NULL DEFAULT '0',\n" + " \"employee_password\" TEXT DEFAULT '0',\n" + " \"employee_issupervisoer\" BOOLEAN NOT NULL DEFAULT 'false',\n" + " \"employee_hassupervisoer\" BOOLEAN NOT NULL DEFAULT 'false',\n" + " \"employee_supervisor_id\" integer,\n" + " \"employee_clockstatus\" BOOLEAN DEFAULT 'false',\n"+ // True = IN : False = OUT " \"employee_lastpunch\" timestamp, \n"+ " \"employee_isactive\" BOOLEAN, \n"+ " CONSTRAINT employee_pk PRIMARY KEY (\"employee_id\")\n" + ") WITH (\n" + " OIDS=FALSE\n" + ");\n";老實(shí)說(shuō),我認(rèn)為 SQL 并不重要。大約 6 個(gè)月前,這句話對(duì)我有用。我不知道發(fā)生了什么變化,但我從 Postgresql 9.4 更改為 10.7?無(wú)論最新的 10.x 穩(wěn)定版是什么。我將 Gradle 更新為// https://mvnrepository.com/artifact/org.postgresql/postgresqlcompile group: 'org.postgresql', name: 'postgresql', version: '42.2.6'
1 回答

白板的微信
TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
您不能將CREATE TABLE
語(yǔ)句與 RETURNING 子句結(jié)合使用(因?yàn)樗粫?huì)“返回”任何內(nèi)容)。
當(dāng)您調(diào)用時(shí),executeUpdate(query,Statement.RETURN_GENERATED_KEYS)
您請(qǐng)求返回 DML 語(yǔ)句生成的密鑰。RETURNING
Postgres JDBC 驅(qū)動(dòng)程序通過(guò)向查詢添加一個(gè)子句來(lái)實(shí)現(xiàn)這一點(diǎn)——這顯然對(duì) DDL 語(yǔ)句沒(méi)有意義。
改用execute(query)
。
或者executeUpdate(query)
(不請(qǐng)求生成的密鑰)
添加回答
舉報(bào)
0/150
提交
取消