成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

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


背景



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






分析過程



查看sql_mode參數(shù)

看到上述數(shù)據(jù)第一反應是數(shù)據(jù)庫參數(shù)sql_mode被修改了,查看生產(chǎn)庫該參數(shù)具體值

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

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

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


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


查看應用連接參數(shù)

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

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


分析binlog

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

分析后發(fā)現(xiàn),是一條插入相應日期字段為’’值的insertignore語句引起的。




    實驗驗證



為驗證業(yè)務系統(tǒng)在沒修改會話級別sql_mode值的前提下,僅發(fā)出上述insertignore語句便引起了該現(xiàn)象,做了以下實驗:


創(chuàng)建一張測試表


測試insert ignore語句

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


測試insert語句

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


插入的日期字段為NULL

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




查官方文檔



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




總結


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

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

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

相關文章

  • DataX在有贊大數(shù)據(jù)平臺的實踐

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

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

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

    elva 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

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