управляемая база данных digitalocean - исключение только для чтения - PullRequest
0 голосов
/ 01 августа 2020

Я использую класс java для запуска своих серверных служб, в настоящее время я использую базу данных, управляемую digitalocean, и столкнулся с такой странной проблемой. Насколько я понимаю, управляемая база данных имеет возможность подключения для чтения и записи, а из моего собственного JDB C подключения для записи я установил подключение для записи только для чтения (false) и autoCommit (false), но он все еще встречает исключение только для чтения из запуска SQL синтаксис.

Ниже мой код для получения соединения записи

    public synchronized Connection getWriteConnection() throws Exception {
        Connection conn = null;
        if (!busy) {
            if (connectionPool.isEmpty()) {
                Class.forName(ServerProperties.DB_WRITE_DRIVER);
                conn = (Connection) DriverManager.getConnection(ServerProperties.DB_WRITE_URL, ServerProperties.DB_WRITE_USERNAME, ServerProperties.DB_WRITE_PASSWORD);
                conn.setReadOnly(false);
                conn.setAutoCommit(false);
                
                if (conn.isReadOnly()) {
                    conn.setReadOnly(false);
                }
            } else {
                conn = connectionPool.get(0);
                conn.setReadOnly(false);
                conn.setAutoCommit(false);
                
                connectionPool.remove(connectionPool.get(0));
                connectionPool.trimToSize();
            }
        } else {
            return getWriteConnection();
        }

        return conn;
    }
SQL State     : HY000
SQL Exception : The MySQL server is running with the --read-only option so it cannot execute this statement
Error Code    : 1290
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)
com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)
com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)
com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...