2023年4月20日 星期四

AdonisJs踩雷的一天, Migration completed, but unable to release database lock...

如果在Migration時遇到如標題所示的錯誤訊息,網路上找也只能找到這則相關的資訊,https://github.com/adonisjs/core/discussions/1897

只能說我看完當下完全看不懂他在說些什麼。

經過反覆的測試,才漸漸理解,原來發生的原因是query出錯,更正確的說法是程式報錯,至於錯在哪裡並不會告訴你,可能跟底層跑migration的方式有關,所以比較理想的解法是盡可能讓migration的sql簡單不要報錯,至於那些寫在defer裡面的query跟scripts,請抽離並改用seeder去觸發(這時就會看到錯在哪了,可以順便debug)是比較理想的做法。

另外在跑腳本可能會因為執行時間太長而中止,所以請減少sql的數量,盡可能一次取回所有資料,能把update delete insert塞進一個sql裡面就盡可能塞,減少使用關聯,才能確保腳本跑得完



沒有留言:

張貼留言