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

Mysql處理Duplicate entry ‘6‘ for key ‘PRIMARY‘問題及解決

 更新時(shí)間:2022年06月06日 09:57:54   作者:net亮  
這篇文章主要介紹了Mysql處理Duplicate entry ‘6‘ for key ‘PRIMARY‘問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mysql處理Duplicate entry ‘6‘ for key ‘PRIMARY‘

在業(yè)務(wù)中app和設(shè)備都需要調(diào)用ip查詢對(duì)應(yīng)城市的天氣接口,出現(xiàn)了ip這個(gè)唯一索引引起的插入沖突。

以前單系統(tǒng)處理這種主鍵沖突或唯一索引沖突,都是先查詢后插入。

使用 if-else語句,判斷dp_city是否存在,若存在則更新,不存在則插入。

if not exists (select ip from dp_city where ip = adress)
? ? ? insert into dp_city (ip ,name,...) values(adress,name,...)
else
? ? ? update dp_city set name= 'name',... where ip = adress

但這樣寫不僅效率太差,每次都需要執(zhí)行兩條SQL語句,一條語句用來判斷dp_city是否在表中已經(jīng)存在,另一條語句用來插入或更新表中數(shù)據(jù)。

而且在高并發(fā)的場(chǎng)景下,兩個(gè)請(qǐng)求同一時(shí)刻都查到數(shù)據(jù)不存在,一個(gè)請(qǐng)求先插入數(shù)據(jù),另一個(gè)請(qǐng)求再插入數(shù)據(jù)時(shí)就會(huì)出現(xiàn)主鍵或索引沖突的異常,也不能保證原子性。

解決這個(gè)問題最常規(guī)的做法是:加鎖 

加數(shù)據(jù)庫悲觀鎖太影響性能;加數(shù)據(jù)庫樂觀鎖,基于版本號(hào)判斷,一般用于更新操作,像這種插入操作基本上不會(huì)用。

另一種辦法是使用redis加入基于redis的分布式鎖,鎖定已存在的ip。但也如果過度依賴redis,若是出現(xiàn)網(wǎng)絡(luò)超時(shí),服務(wù)就悲劇了。

那么有沒有更優(yōu)雅高效的方法呢,通過查閱資料,發(fā)現(xiàn)MySQL一條語句很好的解決了這個(gè)問題:ON DUPLICATE KEY UPDATE

該語句的語法如下:

INSERT INTO tablename(field1,field2, field3, ...) VALUES(value1, value2, value3, ...) ON DUPLICATE KEY UPDATE field1=value1,field2=value2, field3=value3, ...;?

這個(gè)語法的目的是為了解決重復(fù)性,當(dāng)數(shù)據(jù)庫中存在某個(gè)記錄時(shí),執(zhí)行這條語句會(huì)更新它,而不存在這條記錄時(shí),會(huì)插入它。

該語句規(guī)則如下:

如果你插入的記錄導(dǎo)致一個(gè)UNIQUE索引或者primary key(主鍵)出現(xiàn)重復(fù),那么就會(huì)認(rèn)為該條記錄存在,則執(zhí)行update語句而不是insert語句,反之,則執(zhí)行insert語句而不是更新語句。 

mysql1062錯(cuò)誤:Duplicate entry ‘...‘ for key ‘PRIMARY

問題解釋

Duplicate entry ‘…’ for key ‘PRIMARY,即插入數(shù)據(jù)時(shí),要插入數(shù)據(jù)的主鍵數(shù)據(jù)(…)已經(jīng)存在,不能再重復(fù)添加了。

例:Duplicate entry ‘0’ for key ‘PRIMARY是指主鍵為0的數(shù)據(jù)已經(jīng)存在,不能再插入主鍵值為0的數(shù)據(jù)了。

問題解決

在執(zhí)行插入操作insert前,可以先執(zhí)行一遍該主鍵值的查找操作select

【簡(jiǎn)單的來說,就是這個(gè)語句已經(jīng)執(zhí)行過了,無需重復(fù)執(zhí)行】

1062、1060報(bào)錯(cuò)都是一樣的

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 刪除MySQL表中重復(fù)數(shù)據(jù)詳解

    刪除MySQL表中重復(fù)數(shù)據(jù)詳解

    這篇文章主要為大家介紹了刪除MySQL表中重復(fù)數(shù)據(jù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • mysql 存在該記錄則更新,不存在則插入記錄的sql

    mysql 存在該記錄則更新,不存在則插入記錄的sql

    非常不錯(cuò)的功能,主要用于更新特定的記錄,如果存在這條記錄則更新一下,如果不存在則插入記錄。應(yīng)用于配置文件等。
    2010-04-04
  • MySQL表聚合與聯(lián)合查詢的實(shí)現(xiàn)

    MySQL表聚合與聯(lián)合查詢的實(shí)現(xiàn)

    MySQL聚合與聯(lián)合查詢是數(shù)據(jù)庫查詢中常用的技術(shù),它們能夠從多個(gè)數(shù)據(jù)源中提取和組合數(shù)據(jù),以獲得有用的信息和結(jié)果,本文就來介紹下MySQL聚合與聯(lián)合查詢,感興趣的可以了解一下
    2023-10-10
  • MySQL數(shù)據(jù)庫連接異常匯總(值得收藏)

    MySQL數(shù)據(jù)庫連接異常匯總(值得收藏)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫連接異常匯總,幫助大家更好的理解和學(xué)習(xí)mysql,感興趣的朋友可以了解下
    2020-08-08
  • SQL Server 完整備份遇到的一個(gè)不常見的錯(cuò)誤及解決方法

    SQL Server 完整備份遇到的一個(gè)不常見的錯(cuò)誤及解決方法

    這篇文章給大家介紹了SQL Server 完整備份遇到的一個(gè)不常見的錯(cuò)誤及解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-05-05
  • mysql不區(qū)分大小寫配置小結(jié)

    mysql不區(qū)分大小寫配置小結(jié)

    在某些情況下,我們可能希望數(shù)據(jù)庫忽略大小寫,以便更方便地進(jìn)行操作,本文主要介紹了mysql不區(qū)分大小寫配置,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • 細(xì)談Mysql的存儲(chǔ)過程和存儲(chǔ)函數(shù)

    細(xì)談Mysql的存儲(chǔ)過程和存儲(chǔ)函數(shù)

    存儲(chǔ)函數(shù)與存儲(chǔ)過程作用類同,不同的是存儲(chǔ)過程只能使用CALL語句來調(diào)用存儲(chǔ)過程,只能用輸出變量返回值,而存儲(chǔ)函數(shù)可以從語句外調(diào)用(即通過引用函數(shù)名),也能返回標(biāo)量值。下面小編給大家詳細(xì)講一講
    2019-05-05
  • mysql索引失效的常見九種原因圖文詳解

    mysql索引失效的常見九種原因圖文詳解

    索引失效這個(gè)問題的前提應(yīng)該是建立了索引,卻沒有使用到,或者沒有完全使用到,下面這篇文章主要給大家介紹了關(guān)于mysql索引失效的常見九種原因的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 詳解MySQL中事務(wù)隔離級(jí)別的實(shí)現(xiàn)原理

    詳解MySQL中事務(wù)隔離級(jí)別的實(shí)現(xiàn)原理

    這篇文章主要介紹了MySQL中事務(wù)隔離級(jí)別的實(shí)現(xiàn)原理,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-01-01
  • MySQL存儲(chǔ)過程的傳參和流程控制示例講解

    MySQL存儲(chǔ)過程的傳參和流程控制示例講解

    這篇文章主要介紹了MySQL存儲(chǔ)過程的傳參和流程控制示例講解,?repeat和Loop區(qū)別是repeat有自己退出循環(huán)的語句until,Loop使用的是if判斷語句,本文結(jié)合示例代碼詳細(xì)講解,需要的朋友可以參考下
    2023-02-02

最新評(píng)論

耒阳市| 隆林| 云阳县| 伊金霍洛旗| 新干县| 通城县| 高雄县| 大余县| 苏尼特右旗| 临泉县| 桂林市| 兴海县| 扎兰屯市| 贵溪市| 长治县| 甘德县| 东方市| 旬阳县| 榆林市| 工布江达县| 靖西县| 册亨县| 彭山县| 高州市| 盐边县| 乌拉特前旗| 镇雄县| 郁南县| 东源县| 全南县| 平远县| 大厂| 桐乡市| 望都县| 宝鸡市| SHOW| 泉州市| 百色市| 敦煌市| 尉氏县| 临潭县|