다음과 같이 원시 SQL 쿼리를 실행하려고합니다.어떻게 레일에서 ActiveRecord :: Base.connection.execute에서 오류를 캡처?
ActiveRecord::Base.connection.execute(some_query);
쿼리를 실행하는 동안 발생하는 오류를 캡처 할 수 있습니까? 그렇다면 어떻게? execute
은 무엇을 반환합니까? 그것은 문서에서 말하지 않는다.
건배
다음과 같이 원시 SQL 쿼리를 실행하려고합니다.어떻게 레일에서 ActiveRecord :: Base.connection.execute에서 오류를 캡처?
ActiveRecord::Base.connection.execute(some_query);
쿼리를 실행하는 동안 발생하는 오류를 캡처 할 수 있습니까? 그렇다면 어떻게? execute
은 무엇을 반환합니까? 그것은 문서에서 말하지 않는다.
건배
정상적으로 오류를 해결할 수 있습니다. 예를 들어 :
begin
ActiveRecord::Base.connection.execute(some_query)
rescue
# do stuff with exception
end
는 무슨 일이 일어나고 있는지 볼 수있는
MySql (for example) adapter's code에서보세요.
이 경우 execute
은 MySql::Result
개체를 반환합니다.
나는 대답을 찾았습니다. Execute 문은 데이터베이스에서 수신하고 변수에 캡처하여 표시 할 수있는 오류를 반환합니다.
execute
메서드는 일반적으로 각각의 데이터베이스 어댑터에서 구현되며 각 데이터베이스 라이브러리에서 Result 개체를 반환합니다. 그래서, 당신이 Mysql을 사용한다면 리턴 값은 Mysql::Result
이 될 것입니다.
일반적으로 오류가있는 경우이 메서드는 구조 할 수있는 예외를 발생시킵니다.
사례를 게시 할 수 있습니까? – ardochhigh