Я использую приложение springboot и подключаюсь к Azure Mysql.В вызове метода внутри приложения написан аспект Spring, который делает вызов Azure MySql db.Ниже приведена последовательность запросов, выполненных из аспекта и метода
@Autowired
EntityManager entityManager
- Из аспекта:
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.