Ich versuche, Daten von Oracle-Tabelle auf MariaDB-Tabelle zu migrieren. Ich habe CSV-Dateien aus der Oracle-Tabelle entladen und ein Lade-Skript, um diese Dateien in die entsprechenden Mariadb-Tabellen, die ich mit der gleichen Tabelle/Schemadefinition erstellt, wie es in Oracle-Seite ist zu laden. Ich erhalte den 1062 (230000) Duplicate-Eintragsfehler, aber ich verstehe nicht, warum MySQL/Mariadb die Daten als einmalig behandelt? Der Wert im ersten Satz, der eingefügt wird, ist in Kleinbuchstaben und im zweiten Satz, der fehlschlägt, wird in Großbuchstaben geschrieben. Es scheint, dass sowohl mysql als auch mariadb den Wert gleich behandeln und daher bekomme ich den doppelten Eingabefehler für den Primärschlüssel. Um meinen Fehler anzuzeigen, habe ich eine Testtabelle erstellt und manuell versucht, 2 Zeilen einzufügen. Ich habe alle relevanten Informationen unten aufgeführt und würde mich freuen, wenn es eine Erklärung gibt. Vielen Dank im Voraus für Ihre Hilfe.Fehler 1062 (23000): Doppeleintrag
MariaDB [mytestdb]> create table test1 (id char(15) not null, recnum integer, primary key(id));
MariaDB [mytestdb]> show create table test1\G
*************************** 1. row ***************************
Table: test1
Create Table: CREATE TABLE `test1` (
`id` char(15) NOT NULL,
`recnum` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
MariaDB [mytestdb]> insert into test1 values ('abc123',1);
Query OK, 1 row affected (0.01 sec)
MariaDB [mytestdb]> insert into test1 values ('ABC123',2);
ERROR 1062 (23000): Duplicate entry 'ABC123' for key 'PRIMARY'
Danke, Sanjay
Jon, danke für Ihre Antwort. Ich habe versucht, die Latin1_bin für COLLATE-Wert und das funktionierte in meiner Testtabelle. Ich konnte die 2 Zeilen in meinem Beispiel einfügen. Ich werde es am realen Tisch ausprobieren, da ich zuversichtlich bin, dass es funktionieren wird. Danke und Grüße, Sanjay – Sanjay
Keine Sorgen! Denken Sie daran, dass Sie dies getan haben, wenn Sie Abfragen mit Joins für diese Spalte starten: Sie müssen sicherstellen, dass der Zeichensatz und die Sortierung übereinstimmen, oder manchmal verwirft MySQL den Index und führt nur einen vollständigen Tabellenscan durch. –