강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của ghkvud27992
ghkvud27992

câu hỏi đã được viết

Cách giải quyết các vấn đề đồng thời bằng hệ thống kiểm kê

Cannot execute statement in a READ ONLY transaction. 에러

Viết

·

1.2K

0

다음과 같이 메소드를 선언하고 test를 수행하면

public interface StockRepository extends JpaRepository<Stock, Long> {

	@Lock(LockModeType.PESSIMISTIC_WRITE)
	@Query("select s from Stock s where s.id =:stockId")
	Optional<Stock> findById(@Param("stockId") Long stockId);
}

 

Caused by: java.sql.SQLException: Cannot execute statement in a READ ONLY transaction.
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:972)
	at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
	at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
	at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:57)
	... 109 more

위와 같은 에러가 발생하는데요...어떻게 해결할 수 있나요?

springjava동시성

Câu trả lời 2

0

ghkvud27992님의 프로필 이미지
ghkvud27992
Người đặt câu hỏi

아니요. 예제와 동일하지는 않습니다.

그 이유는 @Lock 어노테이션을 활용하고 JPQL만 사용하는 것 외에는 다른 점이 없다고 생각해서 따로 클래스를 생성하지 않고 위처럼 소스코드만 추가하였습니다. 왜..read only 로 설정이 되었는지 궁금해서요.

169developer9973님의 프로필 이미지
169developer9973
Người chia sẻ kiến thức

혹시 github 을 통해서 소스공유를 해주실 수 있으실까요 ?

저부분만 보고서 원인을 파악하기는 쉽지않네요 :)

0

169developer9973님의 프로필 이미지
169developer9973
Người chia sẻ kiến thức

이화평님 안녕하세요.

에러메세지로만 보면 read only transaction 이기때문에 에러가 발생하는것으로 보이는데요!

혹시 예제와 동일하게 작성이 되었을까요 ?

 

Hình ảnh hồ sơ của ghkvud27992
ghkvud27992

câu hỏi đã được viết

Đặt câu hỏi