2011-01-25 61 views
0

我爲我們的項目編寫了一個工具,用於將已提交的sql更新文件應用於數據庫。無論何時運行(部署時),它都會計算需要應用的更新文件的列表,並在事務中應用它們。mysql:解決隱式事務提交?

最近我意識到了一個問題:只要執行DDL語句(如create),mysql就會隱式地提交一個事務。 http://dev.mysql.com/doc/refman/5.0/en/implicit-commit.html

這對我來說是一個問題,因爲有時一個sql更新文件包含幾個語句,據我所知會導致在執行更新文件的過程中提交事務。這是一個問題,因爲每當後續更新失敗時(會不時發生),我希望能夠回滾事務,或者至少跟蹤哪些更新文件適用於(完全)和哪些不適用。

有沒有解決隱式事務問題的方法?即有沒有辦法在任何一個DDL語句失敗時回滾一系列DDL語句?

任何其他建議如何我可以處理這個問題?

感謝

吉迪

回答

2

號MySQL不支持事務DDL。您需要將您的DDL語句與DML語句分開,或嘗試使用遷移工具,如RuckUsing

+0

[RuckUsing](https://github.com/ruckus/ruckusing-migrations)現在託管在[GitHub]( https://github.com/ruckus/ruckusing-migrations)。 – trejder

+1

感謝@trejder,我更新了答案中的鏈接 – Mchl