Ошибка почтового запроса SQL: невозможно обновить базу данных из-за неизвестной синтаксической ошибки - PullRequest
0 голосов
/ 27 сентября 2019

Поэтому я пишу код для подключения к веб-серверу heroku для чата, который позволяет пользователю создавать сообщения и публиковать их на доске объявлений.Однако по какой-то причине, когда я отправляю почтовый запрос на веб-сервер для создания нового сообщения в базу данных, я получаю сообщение об ошибке.

Вот код, который обрабатывает почтовый запрос:

//POST route for creating new message
        Spark.post("/messages", (request, response) -> {
            // NB: if gson.Json fails, Spark will reply with status 500 Internal
            // Server Error
            //int idx = Integer.parseInt(request.params("content"));
            String mSubject = request.queryParams("mSubject");                        
            //SimpleRequest req = gson.fromJson(request.queryParams("mSubject"));
            // ensure status 200 OK, with a MIME type of JSON
            // NB: even on error, we return 200, but with a JSON object that
            // describes the error.
            response.status(200);
            response.type("application/json");
            // NB: createEntry checks for null title and message
            // int newId = dataStore.createEntry(req.mTitle, req.mMessage);

            // checks if both upvote and downvote request is received, and if not send out create message response
            //System.out.println(mSubject);
            int newId = db.insertRow(mSubject);                                      
            //int newId = db.insertRow(req.mSubject);
            System.out.println(newId);
            if (newId == 0 || newId == -1) {
                return gson.toJson(new StructuredResponse("error", "error performing insertion", null));
            }
            return gson.toJson(new StructuredResponse("ok", "" + newId, null));
        });

Это письменный запрос для кода:

db.mCreateMessage = db.mConnection.prepareStatement("INSERT INTO tbldata (id, content, createdat, upvotes, downvotes, visible) VALUES (DEFAULT,?,?,?,?,?)");

А вот код, который вставляетновая строка в базе данных

 /**
     * Insert a row into the database
     * 
     * @param message The message body for this new row
     * 
     * @return The number of rows that were inserted
     */
    int insertRow(String message) {
        int count = 0;
        try {
            String name = "chadd";
            mCreateMessage.setString(1, message);
            mCreateMessage.setString(2, name);
            mCreateMessage.setInt(3, 0);
            mCreateMessage.setInt(4, 0);
            mCreateMessage.setString(5, "True");

            System.out.println(mCreateMessage);
            count += mCreateMessage.executeUpdate();
            //System.out.println(count);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return count;
    }

Но каждый раз, когда я пытаюсь выполнить почтовый запрос, он отправляет мне этот журнал ошибок:

2019-09-27T15:23:36.641372+00:00 app[web.1]: [Thread-1] INFO org.eclipse.jetty.server.Server - Started @5550ms
2019-09-27T15:23:39.780232+00:00 app[web.1]: INSERT INTO tbldata (id, content, createdat, upvotes, downvotes, visible) VALUES (DEFAULT,'testing meeting','chadd',0,0,'True')
2019-09-27T15:23:39.821637+00:00 app[web.1]: org.postgresql.util.PSQLException: ERROR: syntax error at or near "INSERT INTO tbldata "
2019-09-27T15:23:39.821648+00:00 app[web.1]:   Position: 1
2019-09-27T15:23:39.830265+00:00 app[web.1]:    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2476)
2019-09-27T15:23:39.830324+00:00 app[web.1]:    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2189)
2019-09-27T15:23:39.830398+00:00 app[web.1]:    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:300)
2019-09-27T15:23:39.830483+00:00 app[web.1]:    at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428)
2019-09-27T15:23:39.830534+00:00 app[web.1]:    at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:354)
2019-09-27T15:23:39.830602+00:00 app[web.1]:    at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:169)
2019-09-27T15:23:39.830676+00:00 app[web.1]:    at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:136)
2019-09-27T15:23:39.830769+00:00 app[web.1]:    at edu.lehigh.cse216.cjn221.backend.Database.insertRow(Database.java:265)
2019-09-27T15:23:39.830831+00:00 app[web.1]:    at edu.lehigh.cse216.cjn221.backend.App.lambda$main$4(App.java:242)
2019-09-27T15:23:39.831513+00:00 app[web.1]:    at spark.RouteImpl$1.handle(RouteImpl.java:72)
2019-09-27T15:23:39.831566+00:00 app[web.1]:    at spark.http.matching.Routes.execute(Routes.java:61)
2019-09-27T15:23:39.831643+00:00 app[web.1]:    at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134)
2019-09-27T15:23:39.831712+00:00 app[web.1]:    at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50)
2019-09-27T15:23:39.831779+00:00 app[web.1]:    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1671)
2019-09-27T15:23:39.831959+00:00 app[web.1]:    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
2019-09-27T15:23:39.831962+00:00 app[web.1]:    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
2019-09-27T15:23:39.831968+00:00 app[web.1]:    at org.eclipse.jetty.server.Server.handle(Server.java:505)
2019-09-27T15:23:39.832036+00:00 app[web.1]:    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
2019-09-27T15:23:39.832096+00:00 app[web.1]:    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
2019-09-27T15:23:39.832172+00:00 app[web.1]:    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
2019-09-27T15:23:39.832243+00:00 app[web.1]:    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
2019-09-27T15:23:39.832311+00:00 app[web.1]:    at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
2019-09-27T15:23:39.832381+00:00 app[web.1]:    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
2019-09-27T15:23:39.832456+00:00 app[web.1]:    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
2019-09-27T15:23:39.832810+00:00 app[web.1]:    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
2019-09-27T15:23:39.832881+00:00 app[web.1]:    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132)
2019-09-27T15:23:39.832945+00:00 app[web.1]:    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)
2019-09-27T15:23:39.832995+00:00 app[web.1]:    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804)
2019-09-27T15:23:39.833073+00:00 app[web.1]:    at java.lang.Thread.run(Thread.java:748)

Что странно в этой ошибке, так это то, что если явыполнить запрос на postico (буквально копируя и вставляя его из журналов), он работает отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...