MySql дает синтаксическую ошибку после сериализации Gson - PullRequest
0 голосов
/ 10 декабря 2018

Кажется, у меня проблема с сериализацией Gson.После сериализации, когда я пытаюсь сохранить его в базе данных, я получаю синтаксическую ошибку от mysql.

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''{"nexus_loc":{"world":"world","x":300.0,"y":63.0,"z":428.0,"pitch":0.0,"yaw":0.' at line 1

Вот код для сохранения функции.

                PreparedStatement stmt = conn.prepareStatement("INSERT INTO %table VALUES (?,?) ON DUPLICATE KEY UPDATE `data` = VALUES(?)".replace("%table",tablename));
            stmt.setString(1,key);
            stmt.setString(2,serialize(value,type));
            stmt.setString(3,serialize(value,type));
            stmt.executeUpdate();
            stmt.close();

Это строкас помощью которого мы создаем таблицу

        String tablequery = "CREATE TABLE IF NOT EXISTS %table (`id` CHAR(36) PRIMARY KEY, `data` TEXT);".replace("%table",tablename);

1 Ответ

0 голосов
/ 10 декабря 2018

VALUES() не требуется в части UPDATE.

Поэтому вместо

"INSERT INTO %table VALUES (?,?) ON DUPLICATE KEY UPDATE `data` = VALUES(?)"`

Попробуйте

"INSERT INTO %table VALUES (?,?) ON DUPLICATE KEY UPDATE `data` = ?"
...