it-swarm.com.de

InnoDB: Es wurde versucht, einen zuvor geöffneten Tabellenbereich zu öffnen

Ich arbeite seit einigen Tagen an einem Problem. Unsere lokale Mediawiki-Seite, die sich auf unserem Box-Konto befindet, hat sich selbst zerstört und wir haben daran gearbeitet, es online zu stellen. Bei Verwendung von XAMPP Control Panel v3.2.1 waren die Fehler zahlreich. Daher beschlossen wir, XAMPP (v3.2.2) zu aktualisieren und die Dateien 'htdocs' und 'mysql/data' in die neue Datenbank zu verschieben.

Erster Fehler: 

    9:50:21 AM  [mysql]     Attempting to start MySQL app...
    9:50:22 AM  [mysql]     Status change detected: running
    9:50:22 AM  [mysql]     Status change detected: stopped
    9:50:22 AM  [mysql]     Error: MySQL shutdown unexpectedly.
    9:50:22 AM  [mysql]     This may be due to a blocked port, missing dependencies, 
    9:50:22 AM  [mysql]     improper privileges, a crash, or a shutdown by another method.
    9:50:22 AM  [mysql]     Press the Logs button to view error logs and check
    9:50:22 AM  [mysql]     the Windows Event Viewer for more clues
    9:50:22 AM  [mysql]     If you need more help, copy and post this
    9:50:22 AM  [mysql]     entire log window on the forums

Wie es heißt, bin ich dann zu den Protokollen gegangen und habe folgendes gefunden:

    2015-11-20 09:50:22 11f8 InnoDB: Warning: Using      innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, together with the option innodb_use_sys_malloc and with the InnoDB's internal memory allocator.
    2015-11-20  9:50:22 4600 [Note] InnoDB: Using mutexes to ref count buffer pool pages
    2015-11-20  9:50:22 4600 [Note] InnoDB: The InnoDB memory heap is disabled
    2015-11-20  9:50:22 4600 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
    2015-11-20  9:50:22 4600 [Note] InnoDB: Memory barrier is not used
    2015-11-20  9:50:22 4600 [Note] InnoDB: Compressed tables use zlib 1.2.3
    2015-11-20  9:50:22 4600 [Note] InnoDB: Not using CPU crc32 instructions
    2015-11-20  9:50:22 4600 [Note] InnoDB: Initializing buffer pool, size = 16.0M
    2015-11-20  9:50:22 4600 [Note] InnoDB: Completed initialization of buffer pool
    2015-11-20  9:50:22 4600 [Note] InnoDB: Highest supported file format is Barracuda.
    2015-11-20  9:50:22 4600 [Note] InnoDB: The log sequence numbers 1665234 and 1665234 in ibdata files do not match the log sequence number 50125498 in the ib_logfiles!
    2015-11-20  9:50:22 4600 [Note] InnoDB: Database was not shutdown normally!
    2015-11-20  9:50:22 4600 [Note] InnoDB: Starting crash recovery.
    2015-11-20  9:50:22 4600 [Note] InnoDB: Reading tablespace information from the .ibd files...
    2015-11-20  9:50:22 4600 [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace phpmyadmin/pma__tracking uses space ID: 21 at filepath: .\phpmyadmin\pma__tracking.ibd. Cannot open tablespace wiki/archive which uses space ID: 21 at filepath: .\wiki\archive.ibd
    InnoDB: Error: could not open single-table tablespace file .\wiki\archive.ibd
    InnoDB: We do not continue the crash recovery, because the table may become
    InnoDB: corrupt if we cannot apply the log records in the InnoDB log to it.
    InnoDB: To fix the problem and start mysqld:
    InnoDB: 1) If there is a permission problem in the file and mysqld cannot
    InnoDB: open the file, you should modify the permissions.
    InnoDB: 2) If the table is not needed, or you can restore it from a backup,
    InnoDB: then you can remove the .ibd file, and InnoDB will do a normal
    InnoDB: crash recovery and ignore that table.
    InnoDB: 3) If the file system or the disk is broken, and you cannot remove
    InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf
    InnoDB: and force InnoDB to continue crash recovery here.

Nun sieht es aus wie ein Standardfehler, den ich im Web mit vielen verschiedenen Vorschlägen zur Behebung dieses Problems gesehen habe. Ich werde sie kurz durchgehen.

Als erstes versuchte ich, die Vorschläge im Protokoll zu befolgen.

  1. Das waren keine Erlaubnisprobleme 
  2. Es ist nicht klar, ob ich die Tabelle brauche oder nicht, OR, ob phpmyadmin/pma__tracking oder archive.ibd entfernt werden soll. Wenn ich die archive.ibd beseitigt habe, wird der Fehler einfach an einer anderen .ibd-Datei vorbeigeführt.
  3. my.cnf wurde 'innodb_force_recovery = 1' hinzugefügt. Dies führt zu einer Reihe von Fehlern. 

Das nächste, was mir aufgefallen ist, ist, dass ich beim Erstellen der neuen Datenbank diesen Fehler in meinem phpMyAdmin (localhost/phpMyAdmin) erhalten habe: phpMyAdmin error

Ich bin nicht sicher, ob dies alle meine Probleme verursacht oder nicht. Ich fand heraus, dass die Leute sagten, ein Passwort auf = '' zu setzen. Dieser Fehler tritt möglicherweise auf, weil ich alte Datenordner in eine neue Datenbank eingebe. Ich bin mir nicht sicher.

Der erste Vorschlag im Internet bestand darin, die folgenden Dateien aus zu entfernen 

\mysql\data:
    innodb_index_stats.frm
    innodb_index_stats.ibd 
    innodb_table_stats.frm 
    innodb_table_stats.ibd 
    slave_master_info.ibd 
    slave_relay_log_info.frm 
    slave_relay_log_info.ibd 
    slave_worker_info.frm 
    slave_worker_info.ibd

Die 2:

Ich habe versucht, 'ibdata1' zu entfernen.

Nichts davon hat funktioniert.

35
dedrumhead

Ich hatte das gleiche Problem. Ich habe alle Lösungen ausprobiert, die andere vorgeschlagen haben, und leider hat nichts funktioniert.

Nachdem ich Stunden damit verbracht hatte, nach der Lösung in Google zu suchen, fand ich dies schließlich

  1. Öffnen Sie my.ini (my.cnf auf Linux-basierten Systemen und Mac). 
  2. Suchen Sie nach [mysqld]
  3. Direkt unter [mysqld] insert innodb_force_recovery = 1
  4. Starten Sie den MySQL-Dienst
  5. Stoppen Sie den MySQL-Dienst
  6. Entferne die Zeile von my.ini (innodb_force_recovery = 1)
  7. Starten Sie den MySQL-Dienst

Funktionierte perfekt in meinem Fall.

Ich hoffe, das löst dein Problem.

165
Nesar

Ich habe den gleichen Fehler bekommen. Dies sind die Schritte, die ich befolgt habe.

  1. Hat die Sicherung von\xampp\mysql\data übernommen

  2. Entfernt alle Dateien und Ordner aus dem Datenordner außer mysql

  3. Beenden Sie und starten Sie den XAMPP erneut.

  4. Verschieben Sie die Datenbanken nacheinander aus dem Ordner data.

5
San

versuchen Sie, /Applications/XAMPP/xamppfiles/var/mysql/ib_logfile0 in /Applications/XAMPP/xamppfiles/var/mysql/ib_logfile0.bkp umzubenennen.

und /Applications/XAMPP/xamppfiles/var/mysql/ib_logfile1 bis /Applications/XAMPP/xamppfiles/var/mysql/ib_logfile1.bkp

4
Djanym

Um die obigen ( Nesar-Lösung ) in MAMP (Version> = 4) verwenden zu können, müssen Sie zuerst die my.cnf-Datei aus MAMP/tmp/mysql in den Ordner MAMP/conf kopieren. Nur dann wird es funktionieren.

3
Leandro Castro

Lösung ist für MAC 10.11.3 El Capitan

  • Alle zufälligen Dateien löschen (außer den eigentlichen Datenbankordnern) 
  • Starten Sie Apache und MySQL neu.
  • Das hat bei mir funktioniert.

This worked for me.

3
Tarun Gupta

Ich hatte ein ähnliches Problem mit Mamp Pro. Für mich stellte sich heraus, dass sich die richtigen .idb-Dateien nicht unter "Applications/Mamp ..." befanden. Bei genauerer Betrachtung des Fehlerprotokolls wurden mir die Dateien unter "/ Library/Application Support/appsolute/MAMP PRO/db" angezeigt. Da ich Probleme mit einer Datenbank hatte, die ich nicht mehr verwendete, habe ich einfach versucht, den entsprechenden Ordner zu löschen, und es hat funktioniert. Der nächste Schritt wäre gewesen, die vom Autor bereits erwähnten Dateien zu löschen.

  • innodb_index_stats.frm
  • innodb_index_stats.ibd 
  • innodb_table_stats.frm 
  • innodb_table_stats.ibd 
  • slave_master_info.ibd 
  • slave_relay_log_info.frm 
  • slave_relay_log_info.ibd 
  • slave_worker_info.frm 
  • slave_worker_info.ibd

Aber wie gesagt, das Löschen des Datenbankordners hat sich hervorragend bewährt.

2
haeki

Tgr's Antwort sieht angemessen aus. Die Meldung über Berechtigungen usw. ist generisch. Die eigentliche Fehlermeldung lautet

2015-11-20 9:50:22 4600 [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace phpmyadmin/pma__tracking uses space ID: 21 at filepath: .\phpmyadmin\pma__tracking.ibd. Cannot open tablespace wiki/archive which uses space ID: 21 at filepath: .\wiki\archive.ibd

Ihre Wiki-Datenbank und Ihre phpmyadmin-Datenbank hatten irgendwie dieselbe Tabellenbereichs-ID. Jeder würde gut funktionieren, wenn der andere nicht anwesend wäre; wie es jetzt ist, müssen Sie einen von ihnen irgendwie neu nummerieren.

0
Nemo

Msgstr "Versuch, einen zuvor geöffneten Tablespace zu öffnen." - Das riecht nach einem von diesen:

  • Es gibt zwei Kopien von MySQL und beide versuchen zu laufen.
  • Windows konnte kein 'open' für eine der MySQL-Dateien freigeben. Ich habe dieses Problem früher gesehen. Es wurde durch einen Neustart von Windows geheilt. später durch ein Upgrade von Windows. 
0
Rick James

Ich hatte das gleiche Problem, nach der Wiederherstellung der Datenbankstruktur ( http://zadpen.com/20-restore-lost-data-in-mysql-using-innodb-engine-without-file-ibdata1.html ). Ich entferne die Datei archive.ibm und starte mysql . Erstelle dann eine Archivtabelle in der Datenbank.

0
morteza khadem

Eine weitere Lösung für dieses Problem wurde oben für MAMP Pro beschrieben, da ich es unmöglich fand, my.cnf richtig zu bearbeiten:

Wenn InnoDB abstürzt, finden Sie in der Fehlermeldung die fehlerhafte Datenbank. Hier ist phpmyadmin/pma__tracking, also ist die Tabelle die mit der Erweiterung pma_.

Gehen Sie dann zu /Library/Application Support/appsolute/MAMP PRO/db/mysql und entfernen Sie den Ordner, der nach dem Problem benannt wurde, das die DB verursacht.

Starten Sie Ihren MAMP-Server neu .. Nach einem erfolgreichen Neustart können Sie die Server erneut anhalten, den DB-Ordner wieder dort ablegen, wo er hingehört und die Server erneut starten. Alles sollte wieder in Ordnung sein.

0
Lou