DataSource.groovy
文件中的dbCreate
屬性十分重要,因爲它可以用來指定是否自動根據GORM類來創建數據庫表。其可選值爲:
create-drop
- 當Grails運行時刪除並重新建立數據庫create
- 如果數據庫不存在則創建數據庫,存在則不作任何修改update
- 如果數據庫不存在則創建數據庫,存在則進行修改
開發環境(development)下dbCreate
屬性默認設置爲create-drop:
dataSource { dbCreate = "create-drop" // one of 'create', 'create-drop','update' }
這樣在Grails應用程序啓動的時候會刪除掉原來的數據庫並重新建立,在production環境中通常需要修改該值。
今天生產出現了問題,問題原因竟是生產數據加了一個新的字段,理由是我們最近有些需求變更,新加了一個字段,在前臺部署到QA 系統的時候,數據庫連接到生產了,登錄發現有問題,立馬shutdow,後來在第二天的時候,客戶用的時候,發現有些功用不了報錯,今天下午投訴來的,找到原因是QA 系統有個新增的字段update 到生產了,導致不能用,後來刪除了這個字段,系統終於可以用了,嚇了一條。歸根到底還是自己不小心,後來想想在數據源配置的時候dbCreate=update 了,今天對於這個字段的理解深刻透了。挺危險的,所以對於發佈的時候要特別小心修改數據庫的配置,否則很容易出現問題,今天血的教訓,幸好解決了。