前幾天要定位一個升級腳本執行后,升級語句未執行的問題。
定位后發現了幾個問題。
第一個就是,很多的腳本不規范,沒有delete,直接insert或者update,導致執行腳本時報主鍵沖突錯誤。
升級腳本的一個原則就是可以重復多次執行,缺少delete是不規范的。建表語句的列最好有commet,說明該列的作用是什么。
第二個問題是,許多不規范的語句在整個升級腳本的中間位置,那靠后提交的語句是否被執行了呢。
是被執行了,mysql -h localhost -u root -p123456 < F:\hello world\test.sql是可以加上--force的。這樣默認的遇到錯誤就停止,變成了會一直執行完腳本。
升級語句未執行的問題,最終是和腳本的執行順序有關。使用notepad的搜索功能,搜索整個腳本文件夾,有2個腳本對同一張表同一字段的操作。
一堆腳本在一起,File的list方法得到的結果是按文件名的asc碼排序的。
同一張表同一字段的操作,執行后又被另一個腳本的語句執行后給覆蓋了。
