为了账号安全,请及时绑定邮箱和手机立即绑定

创建语句返回错误:“RETURNING”处或附近的语法错误

创建语句返回错误:“RETURNING”处或附近的语法错误

冉冉说 2023-03-02 16:37:01
我想用 CREATE 语句创建一个数据库表。我得到一个错误说Error: syntax error at or near "RETURNING". 我知道 JDBC 驱动程序存在某种错误。正如我发现的那样。 Postgres JDBC 驱动程序:PSQLException:RETURNING 处或附近的语法错误看来我需要设置 Quirk 模式。但我不确定该怎么做。现在我有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);我不知道我应该在哪里设置怪癖模式编辑:很抱歉遗漏了细节。它带我通过了引导方式。该声明是通过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";老实说,我认为 SQL 并不重要。大约 6 个月前,这句话对我有用。我不知道发生了什么变化,但我从 Postgresql 9.4 更改为 10.7?无论最新的 10.x 稳定版是什么。我将 Gradle 更新为// https://mvnrepository.com/artifact/org.postgresql/postgresqlcompile group: 'org.postgresql', name: 'postgresql', version: '42.2.6'
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

您不能将CREATE TABLE语句与 RETURNING 子句结合使用(因为它不会“返回”任何内容)。

当您调用时,executeUpdate(query,Statement.RETURN_GENERATED_KEYS)您请求返回 DML 语句生成的密钥。RETURNINGPostgres JDBC 驱动程序通过向查询添加一个子句来实现这一点——这显然对 DDL 语句没有意义。

改用execute(query)

或者executeUpdate(query)(不请求生成的密钥)


查看完整回答
反对 回复 2023-03-02
  • 1 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信