《FAQ系列|數(shù)據(jù)導(dǎo)入主鍵沖突問題》要點(diǎn):
本文介紹了FAQ系列|數(shù)據(jù)導(dǎo)入主鍵沖突問題,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
導(dǎo)讀:用LOAD DATA導(dǎo)入數(shù)據(jù)卻一直提示主鍵沖突問題解決案例.
有位學(xué)生遇到數(shù)據(jù)導(dǎo)入時(shí)一直提示1022主鍵沖突問題,而導(dǎo)入的數(shù)據(jù)明明完全沒有任何沖突,百思不得其解,請(qǐng)我?guī)兔f(xié)查.
下面是關(guān)于該問題現(xiàn)象描述:
1、表結(jié)構(gòu)DDL
CREATE TABLE `wcp` (
? `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
? `txcode` char(4) NOT NULL,
? `notice_from` enum('page','server') ,
? `message` varchar(600) NOT NULL ,
? `signature` varchar(260) NOT NULL ,
? `payment_no` char(30) NOT NULL ,
? `notice_time` int(10) unsigned NOT NULL COMMENT ,
? `dealt_ok` tinyint(1) NOT NULL DEFAULT '0' COMMENT,
? PRIMARY KEY (`id`)
) ENGINE=ARCHIVE AUTO_INCREMENT=117 DEFAULT CHARSET=utf8;
欲導(dǎo)入的數(shù)據(jù)有116條,可以非常肯定的是,主鍵值都是順序增長(zhǎng)的,完全沒有沖突,所以感覺非常奇怪.
細(xì)心的同學(xué),從上面我貼的表DDL或許能感覺出什么不對(duì)勁的味道(嗯,有點(diǎn)像狗狗嗅覺靈敏的意思,哈哈)
經(jīng)我這么一提醒,再認(rèn)真看一下,是不是真的發(fā)現(xiàn)了什么?嗯,很棒,答對(duì)了(從我女兒愛看的米奇妙妙屋里學(xué)到的語(yǔ)氣詞,嘿),該表的引擎是ARCHIVE,而不是我們常用的InnoDB或MyISAM,會(huì)不會(huì)和這個(gè)有關(guān)系呢?
ARCHIVE幾乎沒怎么被用過,非常冷門,它有什么特點(diǎn)呢.翻翻手冊(cè)便知:
The ARCHIVE storage engine is used for storing large amounts of data without indexes in a very small footprint.
The ARCHIVE engine supports INSERT and SELECT, but not DELETE, REPLACE, or UPDATE. It does support ORDER BY operations, BLOB columns, and basically all but spatial data types (see Section 11.17.4.1, “MySQL Spatial Data Types”). The ARCHIVE engine uses row-level locking.
The ARCHIVE engine supports the AUTO_INCREMENT column attribute. The AUTO_INCREMENT column can have either a unique or nonunique index. Attempting to create an index on any other column results in an error. The ARCHIVE engine also supports the AUTO_INCREMENT table option in CREATE TABLE and ALTER TABLE statements to specify the initial sequence value for a new table or reset the sequence value for an existing table, respectively.
可以看到,ARCHIVE引擎和我們平時(shí)用的InnoDB、MyISAM區(qū)別還是很大的.它不支持DELETE、REPLACE、UPDATE等操作命令,只支持INSERT、SELECT、LOAD DATA等.ARCHIVE也支持自增列屬性,但也必須是普通索引、唯一索引或主鍵索引(這個(gè)和其他引擎基本一致).
接下來(lái)我們嘗試解決數(shù)據(jù)導(dǎo)入主鍵沖突的問題.
在這個(gè)例子中,想要最終能導(dǎo)入數(shù)據(jù)的話,有幾個(gè)方法:
我在很多場(chǎng)合強(qiáng)調(diào)過,InnoDB引擎已可適用95%以上的業(yè)務(wù)場(chǎng)景,完全沒必要再使用其他引擎了,這次的奇葩案例也是一開始沒注意到用ARCHIVE引擎而走了些彎路.
不聽老葉言,吃虧在眼前,這話我看在理,嘿嘿~
文/葉金榮
原文出處——MySQL中文網(wǎng)微信公眾號(hào)
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/4517.html