InnoDB: попытка открыть ранее открытое табличное пространство

Я работаю над проблемой в течение нескольких дней. Наша локальная страница mediawiki, которая находится на нашей учетной записи в коробке, уничтожила себя, и мы работаем, чтобы получить ее в Интернете. Используя XAMPP Control Panel v3.2.1, ошибок было много, поэтому мы решили обновить XAMPP (v3.2.2) и перенести файлы "htdocs" и "mysql/data" на новую базу данных.

Первая ошибка:

    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

Как говорится, я затем пошел в журналы и нашел это:

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

Теперь это выглядит как стандартная ошибка, которую я видел со многими различными предложениями в Интернете о том, как ее исправить. Я кратко рассмотрю их.

Первое, что я пробовал, - это следовать рекомендациям в журнале.

  • Не было проблем с разрешением
  • Неясно, нужна ли мне таблица или нет, или нужно ли избавляться от phpmyadmin/pma__tracking или archive.ibd. Когда я избавился от файла archive.ibd, ошибка прошла мимо другого .ibd файла. В my.cnf добавлен
  • 'innodb_force_recovery = 1', и это вызывает множество ошибок.

Следующее, что я заметил, это то, что когда мы построили новую базу данных, я получил эту ошибку в моем phpMyAdmin (localhost/phpMyAdmin): ошибка phpMyAdmin

Я не уверен, что это вызывает все мои проблемы или нет. Я обнаружил, что люди говорили, чтобы переключить пароль на = ''. Эта ошибка может произойти, потому что я вхожу в старые папки данных в новой базе данных. Я не уверен.

Первым предложением в Интернете было удаление следующих файлов из

\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

Второе:

Я попытался удалить 'ibdata1'

Ни один из них не работал.

Ответ 1

У меня была та же проблема. Я пробовал все решения, которые другие предложили, и, к сожалению, ничего не получилось.

Потратив часы на поиск решения в Google, я наконец нашел это

  • Откройте my.ini(my.cnf для Linux-систем и Mac)
  • Найдите [mysqld]
  • Только ниже [mysqld] вставьте innodb_force_recovery = 1
  • Запустите службу MySQL
  • Остановить службу MySQL
  • Удалите строку из my.ini(innodb_force_recovery = 1)
  • Запустите службу MySQL

Отлично работает в моем случае.

Я надеюсь, что это решит вашу проблему.

Ответ 2

Я получил ту же ошибку. Это шаги, которые я выполнил.

  • Взял резервную копию \xampp\mysql\data​​p >

  • Удалены все файлы и папки из папки данных, кроме mysql

  • Закройте и снова запустите XAMPP.

  • Переместите базы данных из папки data по одному.

Ответ 3

Чтобы использовать вышеуказанное (решение Nesar) в MAMP (версия >= 4), вы должны сначала скопировать файл my.cnf, который находится внутри MAMP/tmp/mysql в папку MAMP/conf. Только тогда это сработает.

Ответ 4

Решение для MAC 10.11.3 El Captian

  • Перейдите в /Applications/XAMPP/xamppfiles/var/mysql/
  • Удалить все случайные файлы (кроме фактических папок базы данных)
  • Перезапустите Apache и MySQL.

Это сработало для меня.

Ответ 5

У меня была аналогичная проблема с Mamp Pro. Для меня оказалось, что правильные .idb файлы не были расположены в "Applications/Mamp...". Поэтому, присмотревшись к журналу ошибок, он показал, что файлы находятся в папке "/Library/Application Support/appsolute/MAMP PRO/db". Поскольку у меня были проблемы с базой данных, которую я больше не использовал, я просто попытался удалить соответствующую папку и все получилось. Следующим шагом было бы удаление файлов, уже упомянутых автором.

  • 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

Но, как упоминалось, удаление базы данных отлично отработано.

Ответ 6

Ответ Tgr выглядит подходящим. Сообщение о разрешениях и т.д. Является общим; фактическое сообщение об ошибке

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

Ваша база данных wiki и база данных phpmyadmin каким-то образом оказались с тем же идентификатором табличного пространства. Каждый будет работать нормально, если другого нет; как и сейчас, вам придется как-то перенумеровать одну из них.

Ответ 7

"Попытка открыть ранее открытое табличное пространство". - Это пахнет одним из следующих:

  • Есть две копии MySQL, и оба они пытаются запустить.
  • Windows не смогла выпустить 'open' в одном из файлов MySQL. Раньше я видел эту проблему. Он был вылечен перезагрузкой Windows; позже, обновив Windows.

Ответ 8

попробуйте переименовать /Applications/XAMPP/xamppfiles/var/mysql/ib_logfile0 в /Applications/XAMPP/xamppfiles/var/mysql/ib_logfile0.bkp

и /Applications/XAMPP/xamppfiles/var/mysql/ib_logfile1 до /Applications/XAMPP/xamppfiles/var/mysql/ib_logfile1.bkp