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

org.postgresql.util.PSQLException:错误:“7”处或附近的语法错误

org.postgresql.util.PSQLException:错误:“7”处或附近的语法错误

浮云间 2023-08-04 17:39:08
我正在尝试在我的应用程序中创建私人聊天,但是当我尝试创建表时出现此错误:org.postgresql.util.PSQLException:错误:“7”位置或附近的语法错误:14代码: public static String checkIfChatExists(String code, String friend) throws SQLException {        String i = LoginManager.checkCode(code);        if(i.equals("code-not-exists")) {            return "invalid-code";        }        ResultSet rs = conn.prepareStatement("SELECT * FROM pwchats").executeQuery();        while (rs.next()) {            if(rs.getString("user1").equals(i) && rs.getString("user2").equals(friend) || rs.getString("user1").equals(friend) && rs.getString("user2").equals(i)) {                return "exists";            }        }        PreparedStatement pre = conn.prepareStatement("INSERT INTO pwchats(user1, user2) VALUES(?, ?)");        pre.setString(1, i);        pre.setString(2, friend);        pre.execute();        PreparedStatement getChatId  = conn.prepareStatement("SELECT * FROM pwchats WHERE user1 = ? AND user2 = ?;");        getChatId.setString(1, i);        getChatId.setString(2, friend);        ResultSet rss = getChatId.executeQuery();        while (rss.next()) {            PreparedStatement chat = conn.prepareStatement("CREATE TABLE " + rss.getInt("id") + "chat (username text NOT NULL, created_at timestamp with time zone NOT NULL DEFAULT now(), avatar text NOT NULL, message text NOT NULL, id serial NOT NULL);");            chat.execute(); //ERROR            return "done";        }        return "wat";    }
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您看到的错误可能来自那里:

preparedStatement chat = conn.prepareStatement("CREATE TABLE " + rss.getInt("id") + "chat (...);");

通常在 SQL 中,表名不能以数字开头。如果您要用双引号将表名引起来,Postgres 仍然允许这样做,但是每次查询时都需要双引号表名,这可能很乏味。

一种解决方案是将数字放在表名称的末尾,例如:

preparedStatement chat = conn.prepareStatement("CREATE TABLE chat" + rss.getInt("id") + " (...);");

DB Fiddle 演示

create table 7chat(x int);

ERROR:  syntax error at or near "7"

LINE 1: create table 7chat(x int);

                     ^

create table "7chat"(x int);

-- works


create table chat7(x int);

--works


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

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