4
給定一個完整的表,如何將排序規則從utf8_bin更改爲utf8_unicode_ce?由於「重複輸入錯誤」,正常的「alter」查詢不起作用。比如有兩個條目MySQL:將排序規則從utf8_bin更改爲utf8_unicode_ce
David Hussa
和
David Hußa
我知道他們是相同的。有沒有一種方法可以告訴MySQL「合併」這些代碼?我應該提到,這些條目的ID在其他表中用作參考,因此MySQL也必須遵守這些條目。或者,我必須這樣做這個漫長而煩人的方式:手段合併每個重複手動,然後更改整理?
表看起來是這樣的:
delimiter $$
CREATE TABLE `authors` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8_bin NOT NULL,
`count` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `name_UNIQUE` (`name`),
FULLTEXT KEY `name_FULLTEXT` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=930710 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Stores all authors from dblp.xml.'$$
感謝您的重新安排。但問題仍然存在:如果某個名稱的ID在另一個表中使用,並且該名稱是重複的。這是由「其他」ID自動更新?我的意思是,如果「John Doe」id = 1,「JohnDoé」id = 2,那麼第二個id會丟失,對嗎? – Aufwind 2011-04-01 16:41:59
@Aufwind:抱歉,最初不明白你的意思。不,它不會自動更新名稱。你將不得不運行我現在寫的查詢。 – Quassnoi 2011-04-01 16:44:58
非常感謝您的努力。它工作順利。對於像我這樣的其他noobies,我想添加這些註釋:child是引用表的名稱,c是其縮寫,用於例如。 c。作者在第二行。花了我一些時間爲自己弄清楚。 ^^ – Aufwind 2011-04-01 20:06:32