### 同步數據庫結構
同步能夠部分智能的根據結構體的變動檢測表結構的變動,并自動同步。目前有兩個實現:
- Sync
Sync將進行如下的同步操作:
~~~
* 自動檢測和創建表,這個檢測是根據表的名字
* 自動檢測和新增表中的字段,這個檢測是根據字段名
* 自動檢測和創建索引和唯一索引,這個檢測是根據索引的一個或多個字段名,而不根據索引名稱
~~~
調用方法如下:
~~~
err := engine.Sync(new(User), new(Group))
~~~
- Sync2
Sync2對Sync進行了改進,目前推薦使用Sync2。Sync2函數將進行如下的同步操作:
~~~
* 自動檢測和創建表,這個檢測是根據表的名字
* 自動檢測和新增表中的字段,這個檢測是根據字段名,同時對表中多余的字段給出警告信息
* 自動檢測,創建和刪除索引和唯一索引,這個檢測是根據索引的一個或多個字段名,而不根據索引名稱。因此這里需要注意,如果在一個有大量數據的表中引入新的索引,數據庫可能需要一定的時間來建立索引。
* 自動轉換varchar字段類型到text字段類型,自動警告其它字段類型在模型和數據庫之間不一致的情況。
* 自動警告字段的默認值,是否為空信息在模型和數據庫之間不匹配的情況
以上這些警告信息需要將`engine.ShowWarn` 設置為 `true` 才會顯示。
~~~
調用方法和Sync一樣:
~~~
err := engine.Sync2(new(User), new(Group))
~~~