Lösung für Primärschlüsselkonflikte, wenn innodb_index_stats beim Importieren von Sicherungsdaten einen Fehler meldet

Lösung für Primärschlüsselkonflikte, wenn innodb_index_stats beim Importieren von Sicherungsdaten einen Fehler meldet

Fehlerbeschreibung

percona5.6, mysqldump vollständige Sicherung, Fehler Doppelter Eintrag 'hoc_log99-item_log_27-PRIMARY-n_diff_pfx01' für Schlüssel 'PRIMARY' beim Importieren von Sicherungsdaten

Ursache

Überprüft und festgestellt, dass dieser Primärschlüssel die Systemtabelle innodb_index_stats unter der MySQL-Systembibliothek sein sollte

mysql> anzeigen, Tabelle erstellen innodb_index_stats\G
*************************** 1. Reihe ***************************
    Tabelle: innodb_index_stats
Tabelle erstellen: CREATE TABLE `innodb_index_stats` (
 `Datenbankname` varchar (64) COLLATE utf8_bin NICHT NULL,
 `table_name` varchar(64) COLLATE utf8_bin NICHT NULL,
 `index_name` varchar(64) COLLATE utf8_bin NICHT NULL,
 `last_update` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP,
 `stat_name` varchar(64) COLLATE utf8_bin NICHT NULL,
 `stat_value` bigint(20) unsigned NICHT NULL,
 `sample_size` bigint(20) unsigned DEFAULT NULL,
 `stat_description` varchar(1024) COLLATE utf8_bin NICHT NULL,
 PRIMÄRSCHLÜSSEL (`Datenbankname`, `Tabellenname`, `Indexname`, `Statistikname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0

1 Zeile im Satz (0,00 Sek.)

mysql> wähle * aus innodb_index_stats, wobei database_name='hoc_log99' und table_name='item_log_27' und stat_name='n_diff_pfx01' und index_name='PRIMARY';
+-----------------+----------+------------+---------------------+---------------+------------+-------------+------------------+
| Datenbankname | Tabellenname | Indexname | letzte_Aktualisierung | Statistikname | Statistikwert | Stichprobengröße | Statistikbeschreibung |
+-----------------+----------+------------+---------------------+---------------+------------+-------------+------------------+
| hoc_log99 | item_log_27 | PRIMARY | 07.10.2016 18:44:06 | n_diff_pfx01 | 823672 | 20 | neu erstellt |
+-----------------+----------+------------+---------------------+---------------+------------+-------------+------------------+
1 Zeile im Satz (0,00 Sek.)

Ich habe damals die SQL-Datensätze in meiner Sicherungsdatei überprüft und festgestellt, dass die Tabelle vor dem Importieren neu erstellt werden würde. Dies schloss die Möglichkeit aus, dass die Betriebsdatensätze der Tabelle item_log_27 vor dem Importieren der Tabelle in innodb_index_stats eingegeben wurden.

-- Tabellenstruktur für Tabelle „innodb_index_stats“
Tabelle löschen, wenn `innodb_index_stats` vorhanden ist;
Tabelle „innodb_index_stats“ erstellen (
-- Daten für Tabelle „innodb_index_stats“ ausgeben
SPERRT TABELLEN `innodb_index_stats` SCHREIBEN;
/*!40000 ALTER TABLE `innodb_index_stats` SCHLÜSSEL DEAKTIVIEREN */;

Also habe ich die aktuellen Binärprotokolldatensätze noch einmal überprüft und festgestellt, dass tatsächlich eine Operation zum Neuerstellen dieser Tabelle stattgefunden hat.

DROP TABLE IF EXISTS `innodb_index_stats` /* vom Server generiert */
Tabelle „innodb_index_stats“ erstellen (
/*!40000 ALTER TABLE `innodb_index_stats` SCHLÜSSEL DEAKTIVIEREN */

abschließend

MySQL 5.6-Fehler, andere Kollegen haben den gleichen Fehler festgestellt

https://www.percona.com/forums/questions-discussions/mysql-and-percona-server/31971-mysql-innodb_index_stats-duplication-entry-error-on-restore

https://bugs.mysql.com/bug.PHP?id=71814

Lösung

1 mysqldump fügt Parameter hinzu, um die Sicherung dieser Tabelle zu ignorieren

2 Ändern Sie den Einfügevorgang dieser Tabelle in der Sicherungsdatei, um

3 mysql -f erzwungener Import

Der obige Artikel zum Lösen des Primärschlüsselkonflikts der Fehlertabelle, wenn innodb_index_stats Sicherungsdaten importiert, ist der gesamte Inhalt, den der Editor mit Ihnen teilt. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen.

<<:  So lösen Sie das Problem FileZilla_Server:425. Datenverbindung kann nicht geöffnet werden

>>:  Ubuntu-Terminal, mehrere Fenster, geteilter Bildschirm, Terminator

Artikel empfehlen

(MariaDB) Umfassende Erklärung der MySQL-Datentypen und Speichermechanismen

1.1 Übersicht über Datentypen Der Datentyp ist ei...

Einführung in die Verwendung des MySQL pt-slave-restart-Tools

Inhaltsverzeichnis Beim Einrichten einer MySQL-Ma...

Detaillierte Zusammenfassung der Übermittlungsmethoden für Webformulare

Sehen wir uns zunächst verschiedene Möglichkeiten...

Mehrere Möglichkeiten zum Ändern des MySQL-Passworts

Vorwort: Bei der täglichen Verwendung der Datenba...

So fügen Sie einer Tabelle in SQL Felder und Kommentare hinzu

1. Felder hinzufügen: Tabelle Tabellennamen änder...

So schreiben Sie den Einführungsinhalt der Infoseite der Website

Alle Websites, ob offiziell, E-Commerce, soziale ...

MySQL deaktiviert die Überprüfung der Kennwortstärke

Informationen zur Überprüfung der Kennwortstärke:...

So installieren Sie die MySQL 8.0-Datenbank auf dem M1-Chip (Bild und Text)

1. Herunterladen Zunächst möchte ich einen inländ...

Beispiel zum Erstellen eines Datenbanknamens mit Sonderzeichen in MySQL

Vorwort In diesem Artikel wird erklärt, wie Sie i...

Was soll ich tun, wenn ich die Quelldatei einer Webseite nicht anzeigen kann?

F: Wenn Sie Outlook oder IE verwenden, wird beim ...

So verwenden Sie Docker, um Containerressourcen zu begrenzen

Problem beim Gucken Angenommen, der IIS-Dienst st...