Heim  >  Artikel  >  Datenbank  >  Ausführliche Erläuterung des Fehlers des Tabellenprimärschlüsselkonflikts, wenn innodb_index_stats Daten importiert

Ausführliche Erläuterung des Fehlers des Tabellenprimärschlüsselkonflikts, wenn innodb_index_stats Daten importiert

Y2J
Y2JOriginal
2017-05-24 13:40:432789Durchsuche

Der folgende Editor bringt Ihnen einen Artikel darüber, wie Sie das Problem des Tabellen-Primärschlüsselkonflikts lösen können, wenn innodb_index_stats Sicherungsdaten importiert. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.

Fehlerbeschreibung

Percona5.6, MySQL-Dump-Vollsicherung, beim Importieren von Sicherungsdaten ein Fehler Tritt auf Doppelter Eintrag ' hoc_log99-item_log_27-PRIMARY-n_diff_pfx01' für Schlüssel 'PRIMARY'

Fehlerursache

Nach der Überprüfung dieser Primärschlüssel sollte sich unter der MySQL-Systembibliothek befinden Die Systemtabelle innodb_index_stats

mysql> show create table innodb_index_stats\G
*************************** 1. row ***************************
    Table: innodb_index_stats
Create Table: CREATE TABLE `innodb_index_stats` (
 `database_name` varchar(64) COLLATE utf8_bin NOT NULL,
 `table_name` varchar(64) COLLATE utf8_bin NOT NULL,
 `index_name` varchar(64) COLLATE utf8_bin NOT NULL,
 `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 `stat_name` varchar(64) COLLATE utf8_bin NOT NULL,
 `stat_value` bigint(20) unsigned NOT NULL,
 `sample_size` bigint(20) unsigned DEFAULT NULL,
 `stat_description` varchar(1024) COLLATE utf8_bin NOT NULL,
 PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0

1 row in set (0.00 sec)

mysql> select * from innodb_index_stats where database_name='hoc_log99' and table_name='item_log_27' and stat_name='n_diff_pfx01' and index_name='PRIMARY';
+---------------+-------------+------------+---------------------+--------------+------------+-------------+------------------+
| database_name | table_name | index_name | last_update     | stat_name  | stat_value | sample_size | stat_description |
+---------------+-------------+------------+---------------------+--------------+------------+-------------+------------------+
| hoc_log99   | item_log_27 | PRIMARY  | 2016-10-07 18:44:06 | n_diff_pfx01 |   823672 |     20 | redid      |
+---------------+-------------+------------+---------------------+--------------+------------+-------------+------------------+
1 row in set (0.00 sec)

überprüfte dann die Datensätze meiner Sicherungsdatei SQL zu diesem Zeitpunkt und stellte fest, dass die Tabelle vor dem erneuten Importieren dieser Tabelle neu erstellt wird, was das ausschließt Betrieb der Tabelle item_log_27 vor dem Importieren dieser Tabelle. Möglichkeit der Anmeldung in innodb_index_stats.


-- Table structure for table `innodb_index_stats`
DROP TABLE IF EXISTS `innodb_index_stats`;
CREATE TABLE `innodb_index_stats` (
-- Dumping data for table `innodb_index_stats`
LOCK TABLES `innodb_index_stats` WRITE;
/*!40000 ALTER TABLE `innodb_index_stats` DISABLE KEYS */;

Also habe ich die letzten Binlog-Datensätze noch einmal überprüft und festgestellt, dass es tatsächlich einen Vorgang gab, um diese Tabelle neu zu erstellen


DROP TABLE IF EXISTS `innodb_index_stats` /* generated by server */
CREATE TABLE `innodb_index_stats` (
/*!40000 ALTER TABLE `innodb_index_stats` DISABLE KEYS */

Fazit

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

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

Fehler. mysql.com/bug.PHP?id=71814

Lösung

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

2 Ändern Sie die Einfügung dieser Tabelle in die Sicherungsdatei, um sie zu ersetzen

3 MySQL -f Force Import

[Verwandte Empfehlungen]

1 Kostenloses Video-Tutorial

2.

Detaillierte Beispiele für das Hinzufügen neuer Benutzerberechtigungen in MySQL

3.

Detaillierte Beispiele für das Ändern von Passwörtern und Zugriffsbeschränkungen in MySQL

4. Detaillierte Beispiele für die Verwendung regulärer Ausdrücke zum Ersetzen von Inhalten in der Datenbank Lösung

5.

Detaillierte Erläuterung von Beispielen für die PHP-Speicherung von Bildern in MySQL

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Fehlers des Tabellenprimärschlüsselkonflikts, wenn innodb_index_stats Daten importiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn