Frage

Ich habe eine Datenbank, die momentan laufende auf einem 5.0.27-Server ausgeführt wird. Ich möchte einen neuen 5.1.41 Server verschieben.

I mysqldump'd alle Dateien. Bei der Wiederherstellung, ich erhalte eine Fehlermeldung

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

Ich habe den Fehler bis zu diesem Skript verengt, die ich laufen kann und es nicht:

--
-- 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;

EDIT -. Geändert UNHEX

Ich habe überprüft und erneut überprüft alle charset und Sortierungs Variablen zwischen den beiden Servern, und sie identisch aussehen. Auch wenn sie es nicht sind, ich bin unter Angabe der Sortierungs selbst.

Jede Hinweise geben, was ich falsch mache hier?

EDIT: Hier ist der Befehl, den ich bin mit der Datenbank sichern:

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

und Last

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

Wie kann ich die Sortierungen für die Client-Verbindungen überprüfen?

War es hilfreich?

Lösung 2

Von einem Kumpel auf Livejournal, fand ich heraus, es ist ein Fehler „fix“ zwischen 5.0 und 5.1: Sie änderten die Sortierung. Wenn Sie den Fehlerbericht lesen, sie tatsächlich brach es (Weis und weiß nicht gleichwertig sein). Aber sie gehen nicht unbreak. So werde ich entweder die Sortierung ändern (als Dave Orr schon sagt), oder manuell meine Daten bearbeiten.

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

Andere Tipps

Das spezifische Problem ist, dass in utf8_general_ci, 'weis' und 'weiß' sind gleichwertig. Wenn Sie ‚weiß‘ wollen gleich ‚weiss‘, dann sollten Sie utf8_unicode_ci verwenden. Das wird das Problem auf der Importseite fixiert (es sei denn, Sie ‚wissen‘ haben in der Datenbank, aber dann wirklich was Sie tun müssen ein Duplikat).

Bei einer Vermutung, hat die ursprüngliche Tabelle utf8_unicode_ci Satz, und Sie hatte nicht bemerkt den Unterschied. Wenn das nicht wahr ist, habe ich keine Ahnung, wie Sie Ihren Tisch in den Zustand bekommt es ist in - aber auf die rechte Seite Sortierungsschalt soll Ihr Problem lösen

.

Sind Sie mit dem mysqldump & mysql von 5,1 von 5,0?
Sie könnten verschiedene Combo versuchen.

Könnte die SourceDB doppelte Werte enthalten in der „einzigartigen“ -Spalte?
Entfernen Sie die „UNIQUE KEY“ Einschränkung und Kontrolle, die Datensätze in der TargetDB Duplikat sind.
Dies könnte einen Einblick in das Problem.

Geben Sie den Zeichensatz von --default-character-set Option. Es ist wichtig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top