MySQL JDB C драйвер не может вставлять данные во временную таблицу для чтения-реплики - PullRequest
1 голос
/ 22 марта 2020

Я подключаюсь к экземпляру для чтения-реплики MySQL (на самом деле, Google Cloud SQL). Кажется, что драйвер JDB C может создавать временную таблицу, но не может вставлять в нее данные. Но, используя другой клиент (в моем случае MySQL workbench), я могу создавать и вставлять данные во временную таблицу. Выглядит как ошибка в драйвере JDB C? Какие есть варианты, чтобы заставить его работать?

Вот исключение, которое я получаю (я не могу опубликовать всю трассировку стека из-за политики компании):

Caused by: java.sql.SQLException: The MySQL server is running with the --read-only option so it cannot execute this statement
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2468)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2629)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2719)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2450)
    at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2006)

Сведения о версии:
MySQL версия = 5.7.25-google-log
JDB C driver = mysql -connector- java -5.1.21.jar

Примечание: выполняется на главном экземпляре (вместо из чтения-реплики) будет мой последний вариант. Я в значительной степени знаю, что это будет работать.

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Пробовал с последней версией драйвера JDB C (v5.1.48), и это сработало! Так что в версии драйвера JDB C, которую я использовал ранее (v5.1.21), была ошибка.

0 голосов
/ 22 марта 2020

Нет, версия драйвера на 99% не является причиной проблемы (наверное). Потому что я успешно записал во временные таблицы на MySQL 5.0, 5.1, 5.6 и 5.7 с соответствующей версией драйвера JDB C.

В сообщении об ошибке сообщается, что сам сервер отклоняет попытку из-за конфигурации «только для чтения».

Имеется сообщение об ошибке: https://bugs.mysql.com/bug.php?id=64992

Вы уверены, что ваша таблица действительно временная (не обычная таблица) и что вы используете ее в одном сеансе / соединении? Потому что иначе это не работает нарочно.

...