最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL decimal unsigned更新負(fù)數(shù)轉(zhuǎn)化為0

 更新時(shí)間:2020年12月07日 10:11:29   作者:林鍋  
這篇文章主要介紹了MySQL decimal unsigned更新負(fù)數(shù)轉(zhuǎn)化為0,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

今天在驗(yàn)證接口的并發(fā)問題時(shí),把之前通過 redis 解決的并發(fā)壓力轉(zhuǎn)移到 mysql 上(redis 在 set 保存數(shù)據(jù)和數(shù)據(jù)過期需要去向數(shù)據(jù)庫(kù)獲取時(shí)存在時(shí)延,會(huì)存在空擋造成大并發(fā)多插入數(shù)據(jù)的風(fēng)險(xiǎn);由于有負(fù)載均衡,PHP 的信號(hào)量也無法用上,只好利用 mysql 的update 來解決并發(fā),設(shè)置索引后速度也不慢,只是會(huì)承受壓力)。發(fā)現(xiàn)在 update 一個(gè)字段(屬性為 decimal unsigned),填入負(fù)值不會(huì)報(bào)錯(cuò),會(huì)自動(dòng)轉(zhuǎn)化為 0。搜索了很久,是 my.cnf 中 STRICT_TRANS_TABLES 搞的鬼。

這時(shí)需要先了解 sql_mode

MySQL服務(wù)器可以以不同的SQL模式來操作,并且可以為不同客戶端應(yīng)用不同模式。這樣每個(gè)應(yīng)用程序可以根據(jù)自己的需求來定制服務(wù)器的操作模式。模式定義MySQL應(yīng)支持哪些SQL語法,以及應(yīng)執(zhí)行哪種數(shù)據(jù)驗(yàn)證檢查。這樣可以更容易地在不同的環(huán)境中使用MySQL,并結(jié)合其它數(shù)據(jù)庫(kù)服務(wù)器使用MySQL。你可以用--sql-mode="modes"選項(xiàng)啟動(dòng) mysqld 來設(shè)置默認(rèn)SQL模式。如果你想要重設(shè),該值還可以為空(--sql-mode ="")。你還可以在啟動(dòng)后用SET [SESSION|GLOBAL] sql_mode='modes' 語句設(shè)置sql_mode變量來更改SQL模式。設(shè)置 GLOBAL變量時(shí)需要擁有SUPER權(quán)限,并且會(huì)影響從那時(shí)起連接的所有客戶端的操作。設(shè)置SESSION變量只影響當(dāng)前的客戶端。任何客戶端可以隨時(shí)更改自己的會(huì)話 sql_mode值。

sql_mode 是用逗號(hào)(',')間隔開的一系列不同的模式。你可以用SELECT @@sql_mode語句查詢當(dāng)前的模式。默認(rèn)值是空(沒有設(shè)置任何模式)。

主要重要sql_mode值為:

  ANSI

  更改語法和行為,使其更符合標(biāo)準(zhǔn)SQL。

  STRICT_TRANS_TABLES

  如果不能將給定的值插入到事務(wù)表中,則放棄該語句。對(duì)于非事務(wù)表,如果值出現(xiàn)在單行語句或多行語句的第1行,則放棄該語句。

  TRADITIONAL

  Make MySQL的行為象“傳統(tǒng)”SQL數(shù)據(jù)庫(kù)系統(tǒng)。該模式的簡(jiǎn)單描述是當(dāng)在列中插入不正確的值時(shí)“給出錯(cuò)誤而不是警告”。注釋:一旦發(fā)現(xiàn)錯(cuò)誤立即放棄INSERT/UPDATE。如果你使用非事務(wù)存儲(chǔ)引擎,這種方式不是你想要的,因?yàn)槌霈F(xiàn)錯(cuò)誤前進(jìn)行的數(shù)據(jù)更改不會(huì)“滾動(dòng)”,結(jié)果是更新“只進(jìn)行了一部分”。

  本手冊(cè)指“嚴(yán)格模式”,表示至少STRICT _TRANS_TABLES或STRICT _ALL_TABLES被啟用的模式。

  以下是 STRICT_TRANS_TABLES 和 STRICT_ALL_TABLES 兩種模式的區(qū)別:

  對(duì)于事務(wù)表,當(dāng)啟用STRICT_ALL_TABLES或STRICT_TRANS_TABLES模式時(shí),如果語句中有非法或丟失值,則會(huì)出現(xiàn)錯(cuò)誤。語句被放棄并滾動(dòng)。

  對(duì)于非事務(wù)表,如果插入或更新的第1行出現(xiàn)壞值,兩種模式的行為相同。語句被放棄,表保持不變。如果語句插入或修改多行,并且壞值出現(xiàn)在第2或后面的行,結(jié)果取決于啟用了哪個(gè)嚴(yán)格選項(xiàng):

  對(duì)于STRICT_ALL_TABLES,MySQL返回錯(cuò)誤并忽視剩余的行。但是,在這種情況下,前面的行已經(jīng)被插入或更新。這說明你可以部分更新,這可能不是你想要的。要避免這點(diǎn),最好使用單行語句,因?yàn)檫@樣可以不更改表即可以放棄。對(duì)于STRICT_TRANS_TABLES,MySQL將非法值轉(zhuǎn)換為最接近該列的合法值并插入調(diào)整后的值。如果值丟失,MySQL在列中插入隱式 默認(rèn)值。在任何情況下,MySQL都會(huì)生成警告而不是給出錯(cuò)誤并繼續(xù)執(zhí)行語句。

  其他模式還有:

  ALLOW_INVALID_DATES:不完全對(duì)日期合法性作檢查,只檢查月份是否在1~12,日期是否在1~31之間;僅對(duì)DATE和DATETIME有效,而對(duì)TIMESTAMP無效,因?yàn)門IMESTAMP總要求一個(gè)合法的輸入。

  ANSI_QUOTES:?jiǎn)⒂煤?,不能用雙引號(hào)來引用字符串,因?yàn)?(雙引號(hào))將被解釋為標(biāo)識(shí)符

  ERROR_FOR_DIVISION_BY_ZERO:?jiǎn)⒂煤?,在insert或update過程中,若數(shù)據(jù)被零除(或MOD(x,0),則產(chǎn)生錯(cuò)誤,若未啟用,則產(chǎn)生警告,數(shù)據(jù)被零除時(shí)系統(tǒng)返回NULL。

  HIGH_NOT_PRECEDENCE:?jiǎn)⒂煤?,可獲得以前舊版本的優(yōu)先級(jí):

  NO_AUTO_CREATE_USER:禁止GRANT創(chuàng)建密碼為空的用戶。

  NO_AUTO_VALUE_ON_ZERO:在自增長(zhǎng)的列中插入0或NULL將不會(huì)是下一個(gè)自增長(zhǎng)值。

  NO_BACKSLASH_ESCAPES:反斜杠"\"作為普通字符而非轉(zhuǎn)義字符

  NO_DIR_IN_CREATE:在創(chuàng)建表時(shí)忽略所有index directory和data directory的選項(xiàng)。

  NO_ENGINE_SUBSTITUTION:?jiǎn)⒂煤?,若需要的存?chǔ)引擎被禁用或未編譯,則拋出錯(cuò)誤;未啟用時(shí)將用默認(rèn)的存儲(chǔ)引擎代替,并拋出一個(gè)異常。

  NO_UNSIGNED_SUBSTRACTION:?jiǎn)⒂煤?,兩個(gè)UNSIGNED類型相減返回SIGNED類型。

  NO_ZERO_DATE:?jiǎn)⒂煤?,不允許插入“0000-00-00 00:00:00”形如此類的零日期,這將拋出一個(gè)錯(cuò)誤,若未啟用,則可插入但僅會(huì)拋出一個(gè)警告。

  NO_ZERO_IN_DATE:?jiǎn)⒂煤?,不允許月份和日期為零,和 NO_ZERO_DATE一起啟用,如“1999-01-00”將拋出錯(cuò)誤而非警告。若單獨(dú)啟用本項(xiàng),則會(huì)拋出warning,然后插入如“0000-00-00 00:00:00”。

  ONLY_FULL_GROUP_BY:對(duì)于GROUP BY聚合操作,若select中的列沒有在group by中出現(xiàn),那么這句SQL是不合法的。

  PAD_CHAR_TO_FULL_LENGTH:?jiǎn)⒂煤?,?duì)于CHAR類型將不會(huì)截?cái)嗫斩磾?shù)據(jù);

  PIPES_AS_CONCAT:將"||"視為連接操作符而非“或運(yùn)算符”。

  REAL_AS_FLOAT:將REAL視為FLOAT的同義詞而非DOUBLE的同義詞。

  組合選項(xiàng):

  ·ANSI:

  REAL_AS_FLOAT、PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、ANSI

  ·ORACLE:

  PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_AUTO_CREATE_USER、ORACLE

  ·TRADITIONAL:

  STRICT_TRANS_TABLES、STRICT_ALL_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION、TRADITIONAL

  ·MSSQL:

  PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、MSSQL、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、MSSQL

  ·DB2:

  PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、DB2

  ·MYSQL323:

  HIGH_NOT_PRECEDENCE、MYSQL323

  ·MYSQL40:

  HIGH_NOT_PRECEDENCE、MYSQL40

  ·MAXDB:

  PIPES_AS_CONCAT、ANSI_QUOTES、IGNORE_SPACE、NO_KEY_OPTIONS、NO_TABLE_OPTIONS、NO_FIELD_OPTIONS、NO_AUTO_CREATE_USER、MAXDB

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 美團(tuán)DB數(shù)據(jù)同步到數(shù)據(jù)倉(cāng)庫(kù)的架構(gòu)與實(shí)踐

    美團(tuán)DB數(shù)據(jù)同步到數(shù)據(jù)倉(cāng)庫(kù)的架構(gòu)與實(shí)踐

    今天小編就為大家分享一篇關(guān)于美團(tuán)DB數(shù)據(jù)同步到數(shù)據(jù)倉(cāng)庫(kù)的架構(gòu)與實(shí)踐,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • mysql 字符串正則表達(dá)式及說明

    mysql 字符串正則表達(dá)式及說明

    這篇文章主要介紹了mysql 字符串正則表達(dá)式及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Red?Hat?安裝MySQL?8.0與?Navicat的詳細(xì)過程

    Red?Hat?安裝MySQL?8.0與?Navicat的詳細(xì)過程

    這篇文章主要介紹了Red?Hat安裝MySQL8.0與Navicat,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • 淺談MySQL存儲(chǔ)引擎選擇 InnoDB與MyISAM的優(yōu)缺點(diǎn)分析

    淺談MySQL存儲(chǔ)引擎選擇 InnoDB與MyISAM的優(yōu)缺點(diǎn)分析

    MyISAM 是MySQL中默認(rèn)的存儲(chǔ)引擎,一般來說不是有太多人關(guān)心這個(gè)東西。決定使用什么樣的存儲(chǔ)引擎是一個(gè)很tricky的事情,但是還是值我們?nèi)パ芯恳幌拢@里的文章只考慮 MyISAM 和InnoDB這兩個(gè),因?yàn)檫@兩個(gè)是最常見的
    2013-06-06
  • mysql grants小記

    mysql grants小記

    grant命令是對(duì)mysql數(shù)據(jù)庫(kù)進(jìn)行用戶創(chuàng)建,權(quán)限或其他參數(shù)控制的強(qiáng)大的命令,官網(wǎng)上介紹它就有幾大頁,要用精它恐怕不是一日半早的事情,權(quán)宜根據(jù)心得慢慢領(lǐng)會(huì)吧!
    2011-05-05
  • Mysql索引創(chuàng)建刪除及使用代價(jià)

    Mysql索引創(chuàng)建刪除及使用代價(jià)

    這篇文章主要為大家介紹了Mysql索引創(chuàng)建刪除及使用代價(jià)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 使用xtrabackup實(shí)現(xiàn)mysql備份

    使用xtrabackup實(shí)現(xiàn)mysql備份

    Xtrabackup 是percona公司的開源項(xiàng)目,用以實(shí)現(xiàn)類似innodb官方的熱備份工具InnoDB Hot Backup的功能,能夠非??焖俚貍浞菖c恢復(fù)MySQL數(shù)據(jù)庫(kù)。今天我們就來詳細(xì)討論下Xtrabackup的使用方法
    2016-11-11
  • MySQL語句之MD5()的使用方式

    MySQL語句之MD5()的使用方式

    這篇文章主要介紹了MySQL語句之MD5()的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Xampp中mysql無法啟動(dòng)問題的解決方法

    Xampp中mysql無法啟動(dòng)問題的解決方法

    最近有朋友反映遇到了xampp的mysql啟動(dòng)不了這種情況,該怎么辦呢,所以下面這篇文章主要給大家介紹了關(guān)于Xampp中mysql無法啟動(dòng)問題的解決方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Mysql BinLog存儲(chǔ)機(jī)制與數(shù)據(jù)恢復(fù)方式

    Mysql BinLog存儲(chǔ)機(jī)制與數(shù)據(jù)恢復(fù)方式

    這篇文章主要介紹了Mysql BinLog存儲(chǔ)機(jī)制與數(shù)據(jù)恢復(fù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評(píng)論

建宁县| 孝义市| 杭州市| 武隆县| 谢通门县| 封开县| 融水| 永定县| 元谋县| 吴旗县| 深州市| 盐亭县| 会泽县| 玛曲县| 山西省| 宜川县| 珠海市| 安丘市| 湘潭市| 许昌县| 集安市| 怀仁县| 尉犁县| 绵竹市| 肥城市| 壶关县| 九龙县| 牙克石市| 霍邱县| 双辽市| 宕昌县| 武宣县| 丽水市| 红河县| 抚州市| 通州区| 资兴市| 松江区| 湛江市| 鄂温| 南雄市|