国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

mysql特定情況下日期類型自動轉換為0導致業務異常一例

IT那活兒 / 2199人閱讀
mysql特定情況下日期類型自動轉換為0導致業務異常一例


背景



日期類型是數據庫中比較常用的一種數據類型,業務系統在操作該數據類型字段時,通常情況下都會賦值正常的日期格式數據或NULL值,這樣才符合正常的業務邏輯。而MySQL在處理日期類型字段時相對比較靈活,允許某種條件下日期字段存在0值現象,但這在正常的業務邏輯上是非法的。今天所分享的案例就是這種情況,生產MySQL5.7數據庫中的一張表,業務系統對該表的日期字段賦值",但MySQL數據庫中存儲的卻是0值。






分析過程



查看sql_mode參數

看到上述數據第一反應是數據庫參數sql_mode被修改了,查看生產庫該參數具體值

  • STRICT_TRANS_TABLES:嚴格模式,表示一個值不能被插入一個事務表時,該sql被終止。

  • NO_ZERO_IN_DATE: 在嚴格模式下,不允許月、日出現0值,如 2010-00-01 or 2010-01-00。

  • NO_ZERO_DATE: 在嚴格模式下,不允許 0000-00-00 插入日期字段。


生產庫sql_mode參數并沒被修改,STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE同時啟用,是不允許0值出現在日期字段中的。


查看應用連接參數

既然生產sql_mode參數未被修改,那是否存在業務系統在連接數據庫時在會話級別修改了該參數的值?為了驗證這一猜想,打開MySQL數據庫的generallog,收集5分鐘的全量sql信息并分析:

ID為25766425的會話,從最初的連接建立到發出第一個select語句間并沒有對sql_mode參數的任何修改,可見業務系統應該沒在會話級修改sql_mode參數。


分析binlog

接下來分析下binlog,查看哪條語句引起的該現象:

分析后發現,是一條插入相應日期字段為’’值的insertignore語句引起的。




    實驗驗證



為驗證業務系統在沒修改會話級別sql_mode值的前提下,僅發出上述insertignore語句便引起了該現象,做了以下實驗:


創建一張測試表


測試insert ignore語句

測試確實產生了日期字段為0的現象,證明業務系統沒修改會話級別的sql_mode值;但卻出現了“日期字段bt被截取”的告警信息,說明MySQL內部做了操作。


測試insert語句

insert into語句卻出錯,難道這兩個語句在Mysql內部的處理機制不一樣嗎?如果插入的日期字段為NULL呢?


插入的日期字段為NULL

利用insertinto、insertignore into向日期字段插入NULL值時,都沒報錯且都是正常的日期字段合理取值。




查官方文檔



官方文檔說明,在嚴格模式下,啟用NO_ZERO_DATE或NO_ZERO_IN_DATE,insertignore、updateignore語句是允許插入0值到日期字段并產生一個告警。




總結


insertignore并沒有被NO_ZERO_DATE或NO_ZERO_IN_DATE模式影響,MySQL把插入日期字段的值"轉換為0值,二者結合產生了上述現象。因此建議在做MySQL數據庫操作時,盡量避免insertignore語句的使用,在向字段插入空值時都使用NULL而非"

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/130207.html

相關文章

  • DataX在有贊大數據平臺的實踐

    摘要:與大數據體系交互上報運行統計數據自帶了運行結果的統計數據,我們希望把這些統計數據上報到元數據系統,作為的過程元數據存儲下來。基于我們的開發策略,不要把有贊元數據系統的嵌入源碼,而是在之外獲取,截取出打印的統計信息再上報。一、需求 有贊大數據技術應用的早期,我們使用 Sqoop 作為數據同步工具,滿足了 MySQL 與 Hive 之間數據同步的日常開發需求。 隨著公司業務發展,數據同步的場景越...

    JerryWangSAP 評論0 收藏0
  • 美團外賣Android Crash治理之路

    摘要:通過團隊的全力全策,美團外賣的平均率從千分之三降到了萬分之二,最優值萬一左右率統計方式次數。美團外賣自年創建以來,業務就以指數級的速度發展。目前美團外賣日完成訂單量已突破萬,成為美團點評最重要的業務之一。 面試中常常問到的是Android的性能優化以及Crash處理。 今天我們來學習一下啊美團App的Crash處理。更多參考《Android性能優化:手把手帶你全面實現內存優化》 原為地...

    elva 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<