Ошибка: невозможно выполнить оператор в транзакции READ ONLY - PullRequest
0 голосов
/ 10 февраля 2019

Я использую приложение springboot и подключаюсь к Azure Mysql.В вызове метода внутри приложения написан аспект Spring, который делает вызов Azure MySql db.Ниже приведена последовательность запросов, выполненных из аспекта и метода

@Autowired
EntityManager entityManager
  1. Из аспекта: insert into <table name > values (); Для выполнения этого запроса используется следующий фрагмент кода
   EntityManager newEntityManager = entityManager.getEntityManagerFactory().createEntityManager();


       String nativeSql = "insert into table1 values('1','abc;)";

       newEntityManager.getTransaction().begin();

       try{
            newEntityManager.createNativeQuery(nativeSQL).executeUpdate();

            entityManager.getTransaction().commit();    
          } catch (RuntimeException e) {    
                   newEntityManager.getTransaction().rollback();
               }finally{

             newEntityManager.close();

          }
Чтение вызовов осуществляется на базе данных с использованием JPA с аннотацией
    @Transactional(readOnly=true)
Следующая следующая часть выполненного
EntityManager newEntityManager = entityManager.getEntityManagerFactory().createEntityManager();

    String nativeSql = "update table2 set status='dead' where name='abc'";

    newEntityManager.getTransaction().begin();

    try{

         newEntityManager.createNativeQuery(nativeSQL).executeUpdate(); //error occurs at this line

         entityManager.getTransaction().commit();

       } catch (RuntimeException e) {

                newEntityManager.getTransaction().rollback();

        }finally{

          newEntityManager.close();

       }

Ниже приводится полная ошибка

2019-02-10 23: 18: 00.959 ОШИБКА [bootstrap, c577f32a3b673745,c577f32a3b673745, false] 10628 --- [nio-8106-exec-2] ohengine.jdbc.spi.SqlExceptionHelper: Невозможно выполнить оператор в транзакции READ ONLY.

Но тот же код работает нормально, когдаэто приложение связано с локальным mysql (MariaDb в моем случае).Этот код отлично работает, даже если он связан с Azure MSSQL.Но ошибка возникает при подключении к Azure MySQL.

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