التحويل من 5.0.27 إلى 5.1.41 ، الحصول على أخطاء مفتاح مكررة (1062)

StackOverflow https://stackoverflow.com/questions/3654925

سؤال

لدي قاعدة بيانات تعمل حاليًا على خادم 5.0.27. أريد الانتقال إلى خادم 5.1.41 جديد.

أنا mysqldump'd جميع الملفات. عند الاستعادة ، أحصل على خطأ

ERROR 1062 (23000) at line 21: Duplicate entry 'weiÃ' for key 'title'

لقد ضاقت الفشل وصولاً إلى هذا البرنامج النصي ، والذي يمكنني تشغيله وفشل:

--
-- Table structure for table `word`
--

set names utf8;

DROP TABLE IF EXISTS `word`;
CREATE TABLE `word`
(
  `wordid` int (10) unsigned NOT NULL auto_increment,
  `title` char (50) NOT NULL default '',
  PRIMARY KEY  (`wordid`),
  UNIQUE KEY `title` (`title`)
) ENGINE=MyISAM AUTO_INCREMENT=280707 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

--
-- Dumping data for table `word`
--

LOCK TABLES `word` WRITE;
INSERT INTO `word` VALUES
(198036,'weis'),
(241473, unhex('776569C39F'));
UNLOCK TABLES;

تحرير - تم تغييره إلى UNEX.

لقد قمت بفحص وإعادة فحص جميع متغيرات charset والترتيب بين الخادمين ، وتبدو متطابقة. حتى لو لم يكونوا كذلك ، فأنا أحدد الترتيب بنفسي.

أي أدلة على ما أفعله خطأ هنا؟

تحرير: إليك الأمر الذي أستخدمه لتفريغ قاعدة البيانات:

mysqldump --add-drop-table --add-locks --disable-keys --lock-tables --quick  -uusername -ppassword database > filename

ولتحميل

mysql -D$MYSQL_DB -u$MYSQL_USER -p$MYSQL_PASSWD < filename

كيف يمكنني التحقق من التصنيفات لاتصالات العميل؟

هل كانت مفيدة؟

المحلول 2

من أحد الأصدقاء في LiveJournal ، اكتشفت أنه "إصلاح" خطأ بين 5.0 و 5.1: لقد غيروا الترتيب. إذا قرأت تقرير الأخطاء ، فهي في الواقع حطم (Weis و Weiss لا ينبغي أن يكونوا مكافئين). لكنهم لن يفوضوا ذلك. لذلك سأضطر إما إلى تغيير الترتيب (كما يقترح ديف أور) ، أو تحرير بياناتي يدويًا.

http://bugs.mysql.com/bug.php؟id=27877

نصائح أخرى

المشكلة المحددة هي أنه في UTF8_General_CI و "Weis" و "Weiß" متكافئون. إذا كنت تريد أن تكون "Weiß" مساوية لـ "Weiss" ، فعليك استخدام UTF8_UNICODE_CI. سيؤدي ذلك إلى إصلاح المشكلة على جانب الاستيراد (ما لم يكن لديك "Weiss" في قاعدة البيانات ، ولكن بعد ذلك لديك نسخ مكررة).

في تخمين ، يحتوي الجدول الأصلي على مجموعة UTF8_UNICODE_CI ، ولم تلاحظ الفرق. إذا لم يكن هذا صحيحًا ، فليس لدي أي فكرة عن كيفية دخول طاولتك إلى الحالة - ولكن التحول إلى الترتيب الصحيح يجب أن يحل مشكلتك.

هل تستخدم mysqldump & mysql من 5.1 من 5.0؟
يمكنك تجربة التحرير والسرد المختلفة.

هل يمكن أن يحتوي SourcedB على قيم مكررة في العمود "الفريد"؟
قم بإزالة قيد "المفتاح الفريد" وتحقق من السجلات التي يتم تكرارها في TargetDB.
هذا يمكن أن يعطي بعض نظرة ثاقبة المشكلة.

حدد الحرف الذي تم تعيينه بواسطة --default-character-set اختيار. من المهم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top