mysql的sql_mode(SQL模式)調整對數據遷移的影響和處理

場景:有的時候切換數據庫 或者重構遷移數據,源數據表和目標數據表數據類型不一致的時候會提示:Incorrect integer value:’ ’ for column columnname
檢查源表和目標表,確實會發現字段類型發生了變化,但數據值其實並沒有超出目標表字段數據類型

處理方案: 方式一,強制處理 源表的源字段的數據值;
方式二、檢查 目標表的數據庫的配置參數sql_mode
調整sql_mode,可以通過set @@global.sql_mode = ''
或者修正 在my.cnf修正如下配置

[mysqld]
sql_mode=''
 ps:

1、修改sql_mode ,尤其調整到寬鬆模式,注意更容產生異常邊界數據出來。默認值是空值,在這種設置下是可以允許一些非法操作的,比如允許一些非法數據的插入

2、sql_mode 的常用參數值:

mysql5.0以上版本支持常見幾種sql_mode模式:ANSI、TRADITIONAL和STRICT_TRANS_TABLES。
ANSI模式:寬鬆模式,對插入數據進行校驗,如果不符合定義類型或長度,對數據類型調整或截斷保存,報warning警告。 TRADITIONAL模式:嚴格模式,當向mysql數據庫插入數據時,進行數據的嚴格校驗,保證錯誤數據不能插入,報error錯誤。用於事物時,會進行事物的回滾。
STRICT_TRANS_TABLES模式:嚴格模式,進行數據的嚴格校驗,錯誤數據不能插入,報error錯誤。

NO_ENGINE_SUBSTITUTION
如果需要的存儲引擎被禁用或未編譯,可以防止自動替換存儲引擎。

具體更多參數說明:
http://www.jb51.net/article/28018.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章