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

MySQL自增主鍵ID設置為0有坑

 更新時間:2025年06月18日 09:38:30   作者:Muscleheng  
本文主要介紹了MySQL自增主鍵插入ID=0會被自動替換為下一個自增值,導致數(shù)據(jù)關聯(lián)異常,原因在于系統(tǒng)將0視為未指定值,可通過修改SQL模式解決,感興趣的可以了解一下

場景:A、B兩個數(shù)據(jù)庫有同樣的一個T表,從A庫T表導出數(shù)據(jù)、導入到B庫T表,導入成功后發(fā)現(xiàn)T表中有一條數(shù)據(jù)和其他表數(shù)據(jù)關聯(lián)不上了,通過排查才發(fā)現(xiàn),T表中的id為自增主鍵,有一條數(shù)據(jù)的id為0,導入到B庫的T表后id不再是0,而是下一個自增值,所以其他表如果是如果該id來和T表關聯(lián),那自然是關聯(lián)不上。

 PS:同一個表里面導出數(shù)據(jù)后再重新導入也會出現(xiàn)同樣的問題。

一、實踐一下

創(chuàng)建表:

CREATE TABLE `dept` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

添加數(shù)據(jù),把其中一條數(shù)據(jù)id修改為0

導出數(shù)據(jù)后清除數(shù)據(jù)再執(zhí)行SQL導入:

INSERT INTO `dept` (`id`, `name`) VALUES (0, '數(shù)據(jù)1');
INSERT INTO `dept` (`id`, `name`) VALUES (2, '數(shù)據(jù)2');

導入后的數(shù)據(jù)情況:

可以看到,導出后重新導入,id為0的數(shù)據(jù)變成3了,變成了下一個自增值。

二、原因

在 MySQL 中,當表有一個自增主鍵列(AUTO_INCREMENT)時,如果你嘗試插入 ID=0 的記錄,實際插入的 ID 不會保持為 0,而是會使用下一個自增值。
因為默認情況下,MySQL 將 ID=0 的插入請求視為"未指定值",因此會使用自增序列中的下一個可用值。
這種行為可以通過 SQL 模式控制:如果啟用了 NO_AUTO_VALUE_ON_ZERO SQL 模式,MySQL 會允許插入 ID=0,默認情況下這個模式是禁用的。

三、解決方案

1. 手動修改數(shù)據(jù)

不正規(guī)。 

2. 臨時修改 SQL 模式:

SET SESSION sql_mode='NO_AUTO_VALUE_ON_ZERO';
INSERT INTO your_table (id, ...) VALUES (0, ...);

3. 永久修改 SQL 模式(在 my.cnf/my.ini 中)

不推薦:

sql_mode=NO_AUTO_VALUE_ON_ZERO,...其他模式...

注意:不建議在自增主鍵中插入0值,這可能會導致某些奇奇怪怪的問題。

到此這篇關于MySQL自增主鍵ID設置為0有坑的文章就介紹到這了,更多相關MySQL自增主鍵ID設置為0內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何查詢MySQL中某個表的索引信息

    如何查詢MySQL中某個表的索引信息

    MySQL是一種關系型數(shù)據(jù)庫管理系統(tǒng),索引是數(shù)據(jù)庫中非常重要的組成部分,可以幫助提高查詢效率,這篇文章主要給大家介紹了關于如何查詢MySQL中某個表的索引信息,需要的朋友可以參考下
    2024-08-08
  • 淺談慢SQL優(yōu)化之索引的作用

    淺談慢SQL優(yōu)化之索引的作用

    本文針對?MySQL?數(shù)據(jù)庫的?InnoDB?存儲引擎,介紹其中索引的實現(xiàn)以及索引在慢?SQL?優(yōu)化中的作用,本文主要討論不同場景下索引生效與失效的原因,感興趣的小伙伴可以跟著小編一起來探討
    2023-05-05
  • Mysql分區(qū)創(chuàng)建與刪除方式

    Mysql分區(qū)創(chuàng)建與刪除方式

    本文詳細介紹了如何在MySQL中創(chuàng)建和刪除分區(qū)的實例代碼,通過實際操作示例,幫助讀者理解分區(qū)的創(chuàng)建與管理方法,從而更好地優(yōu)化數(shù)據(jù)庫性能
    2025-02-02
  • MySQL數(shù)據(jù)過濾與計算字段實戰(zhàn)指南

    MySQL數(shù)據(jù)過濾與計算字段實戰(zhàn)指南

    本文介紹了MySQL數(shù)據(jù)過濾與計算字段的實戰(zhàn)技術,包括多條件組合、通配符過濾、正則表達式搜索和計算字段的使用,感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • Mysql5.7如何修改root密碼

    Mysql5.7如何修改root密碼

    mysql修改管理員root的密碼是個很常見的問題了,網(wǎng)上也有很多的教程,然而新版的MYSQL5.7卻能使用之前的教程,小編經(jīng)過一番摸索,才找到了修改辦法,這里分享給大家。
    2016-01-01
  • MySQL執(zhí)行.sql?文件的超詳細教學指南

    MySQL執(zhí)行.sql?文件的超詳細教學指南

    和其他數(shù)據(jù)庫一樣,MySQL也提供了命令執(zhí)行sql腳本文件,方便地進行數(shù)據(jù)庫、表以及數(shù)據(jù)等各種操作,這篇文章主要給大家介紹了關于MySQL執(zhí)行.sql?文件的超詳細教學指南,需要的朋友可以參考下
    2024-07-07
  • MySQL查詢性能慢時索引失效的排查與優(yōu)化實踐

    MySQL查詢性能慢時索引失效的排查與優(yōu)化實踐

    在高并發(fā)和大數(shù)據(jù)量的生產(chǎn)環(huán)境中,MySQL的查詢性能至關重要,本文將圍繞索引失效這一常見問題展開,帶你深入排查并徹底解決索引失效引發(fā)的性能瓶頸
    2025-08-08
  • Mysql學習之數(shù)據(jù)庫檢索語句DQL大全小白篇

    Mysql學習之數(shù)據(jù)庫檢索語句DQL大全小白篇

    這篇文章主要介紹了Mysql數(shù)據(jù)庫檢索語句DQL大全,本文適合數(shù)據(jù)庫初學者,小白也能看懂,有需要的朋友可以收藏閱讀,希望可以有所幫助
    2021-09-09
  • MySQL索引的一些常見面試題大全(2022年)

    MySQL索引的一些常見面試題大全(2022年)

    索引(Index)是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結構,是對表中一列或多列值進行排序的結構,下面這篇文章主要給大家介紹了關于MySQL索引的一些常見面試題,文中介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Mysql單文件存儲刪除數(shù)據(jù)文件容量不會減少的bug與解決方法

    Mysql單文件存儲刪除數(shù)據(jù)文件容量不會減少的bug與解決方法

    這篇文章主要給大家介紹了Mysql單文件存儲刪除數(shù)據(jù)文件時容量不會減少的bug與解決方法,文中給出了詳細的解決方法,相信對遇到這個問題的朋友們能帶來一定的幫助,下面來一起看看吧。
    2016-12-12

最新評論

安塞县| 连城县| 陆良县| 九龙县| 萨嘎县| 秀山| 乌什县| 邢台市| 尼玛县| 武定县| 贵州省| 田东县| 枣庄市| 贵南县| 衢州市| 万安县| 平山县| 翁源县| 肥东县| 老河口市| 永年县| 安泽县| 腾冲县| 张家界市| 万山特区| 台山市| 丹棱县| 井研县| 青川县| 上思县| 宣恩县| 长葛市| 双牌县| 岳阳市| 曲周县| 武陟县| 马边| 始兴县| 杭锦后旗| 景德镇市| 奇台县|