我想運行一個原始的SQL查詢如下:如何在Rails中捕獲ActiveRecord :: Base.connection.execute中的錯誤?
ActiveRecord::Base.connection.execute(some_query);
我可以捕獲在執行查詢時出現的任何錯誤?如果是,如何? execute
是否會返回任何內容?它沒有在文檔中說。
乾杯
我想運行一個原始的SQL查詢如下:如何在Rails中捕獲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 2014-03-03 11:59:38