2013-09-02 19 views
16

Zainstalowałem Drupala na moim lokalnym serwerze XAMPP. Wszystko działało dobrze, bez problemów z włączaniem i obsługą bazy danych/witryny, dopóki nie uruchomiłem ponownie XAMPP. Od tego czasu pojawia się następujący w moim dzienniku:XAMPP/MySQL: nie można otworzyć pojedynczego pliku obszaru tabel. Mysql innodb_index_stats.ibd po ponownym uruchomieniu MySQL

2013-09-02 16:18:46 2544 [Note] Plugin 'FEDERATED' is disabled.

2013-09-02 16:18:46 3e8 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.

2013-09-02 16:18:46 2544 [Note] InnoDB: The InnoDB memory heap is disabled

2013-09-02 16:18:46 2544 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions

2013-09-02 16:18:46 2544 [Note] InnoDB: Compressed tables use zlib 1.2.3

2013-09-02 16:18:46 2544 [Note] InnoDB: Not using CPU crc32 instructions

2013-09-02 16:18:46 2544 [Note] InnoDB: Initializing buffer pool, size = 16.0M

2013-09-02 16:18:46 2544 [Note] InnoDB: Completed initialization of buffer pool

2013-09-02 16:18:46 2544 [Note] InnoDB: Highest supported file format is Barracuda.

2013-09-02 16:18:47 2544 [Note] InnoDB: The log sequence numbers 1600614 and 1600614 in ibdata files do not match the log sequence number 1600644 in the ib_logfiles!

2013-09-02 16:18:47 2544 [Note] InnoDB: Database was not shutdown normally!

2013-09-02 16:18:47 2544 [Note] InnoDB: Starting crash recovery.

2013-09-02 16:18:47 2544 [Note] InnoDB: Reading tablespace information from the .ibd files...

2013-09-02 16:18:47 2544 [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace drupal/variable uses space ID: 2 at filepath: .\drupal\variable.ibd. Cannot open tablespace mysql/innodb_index_stats which uses space ID: 2 at filepath: .\mysql\innodb_index_stats.ibd

InnoDB: Error: could not open single-table tablespace file .\mysql\innodb_index_stats.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.

Szukałem rozwiązania poprzez google, ale wydaje się być problemem tylko z drupal bazy danych, ponieważ jest w stanie połączyć się z MySQL jeśli usunąć z bazy danych.

Mam nadzieję, że ktoś może mi pomóc :(

+0

Ok, myślę, że go mam. To był problem z uprawnieniami użytkownika do bazy danych. Użytkownik miał prawa, ale po wyłączeniu MySQL wszystkie zmiany dokonane przez mojego użytkownika zostały anulowane. Teraz mój użytkownik ma ograniczone uprawnienia tylko w tej bazie danych i - oto - działa :). – leiseliesel

Odpowiedz

7

dev_khan, spróbuj ponownie uruchomić MySQL w trybie tylko do odczytu z możliwością innodb_force_recovery włączona:

  1. Edit my.cnf - znajdź linię: # innodb_force_recovery = 2
  2. komentarz linii w (usuń #)
  3. Uruchom ponownie serwer MySQL, aby umożliwić naprawę samego silnika MySQL.
  4. Komentarz linia w innodb_force_recovery ponownie (dodaj #)
  5. Restart MySQL znowu i znowu masz pełny dostęp bez read-only restrykcyjne.

Pozdrowienia z Niemiec

33

Move (nie usuwaj) te pliki do innego folderu.

innodb_index_stats.frm 
innodb_table_stats.frm 
slave_master_info.frm 
slave_relay_log_info.frm 
slave_worker_info.frm 

i .ibd pliki o tej samej nazwie pliku:

innodb_index_stats.ibd 
innodb_table_stats.ibd 
slave_master_info.ibd 
slave_relay_log_info.ibd 
slave_worker_info.ibd 

Spróbuj uruchomić MySQL.

+0

Próbowałem już wcześniej, ale mam ten sam problem raz za razem. Po prostu zmiana uprawnień mojego użytkownika bazy danych działała dobrze :) Z jakiegoś powodu wszystkie zmiany dokonane przez mojego użytkownika zostały nadpisane 0 po zamknięciu systemu, ale dziękuję za odpowiedź! – leiseliesel

+0

Witam, mam ten sam problem .. w jaki sposób mogę zmienić uprawnienia mojej bazy danych? –

+0

Zobacz tutaj (http: // serverfault.com/questions/115950/how-do-i-change-the-privileges-for-mysql-user-that-is-already-created) i here (http://stackoverflow.com/questions/5016505/mysql-grant -all-privileges-on-database). –

19

można rozwiązać ten problem przez dodanie odpowiedniego wiersza w twojej mysql config f Ile: my.cnf lub my.ini (zależy od dystrybucji)

niecałe [mysqld] dodaj linię: innodb_force_recovery = 1

.. 
[mysqld] 
innodb_force_recovery = 1 
.. 

Następnie uruchom ponownie MySQL Server. Mogłeś utracić część danych, ale serwer znów będzie działał z Twoimi danymi.

Pozdrawiam,

+0

Naprawiono to dla mnie, chociaż ostrzegł mnie, że może to powodować problemy. Zanim to zrobisz, upewnij się, że utworzysz kopię zapasową. Zgaduję, że może zmusić się do odzyskania zerwania db w procesie – Crecket

+0

Charles P. Po wykonaniu tego moje tabele mają uprawnienia tylko do odczytu. Nie można wstawić/zaktualizować żadnego pomysłu? –

+0

Witaj, dev_khan. Nie przydarzyło mi się to, ale spróbuj dodać do pliku konfiguracyjnego tę linię: pomiń-stoliki graniczne Następnie uruchom ponownie mysql i spróbuj ponownie. –

0

Dzieje się tak z Wordpress też. Wydaje się, że dzieje się tak tylko w przypadku najnowszej wersji, ponieważ wycofałem się do wcześniejszych wersji AMPPS i działa dobrze bez konieczności zgłaszania tego problemu innodb.