2013-11-23 84 views
1

我試圖用EasyPHP或XAMPP創建本地Web服務器。當我第一次運行XAMPP或EasyPHP時,一切正常。在PhpMyAdmin中,我創建了一個數據庫並執行我所需要的操作。但是當我下次嘗試運行程序時,MySQL將無法工作。 我發現只有一種方法可以讓MySQL再次工作 - 刪除ibdata1文件,但通過這樣做,我鬆了我的MySQL數據。mysql不會工作easyphp xampp

對不起,我的英文,謝謝你的回答!

P.S. 有我的MySQL錯誤日誌文件。

>  2013-11-23 14:46:58 1092 [Note] Plugin 'FEDERATED' is disabled. 
>  2013-11-23 14:46:58 1814 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-11-23 14:46:58 1092 [Note] InnoDB: The InnoDB memory heap is disabled 
>  2013-11-23 14:46:58 1092 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions 
>  2013-11-23 14:46:58 1092 [Note] InnoDB: Compressed tables use zlib 1.2.3 
>  2013-11-23 14:46:58 1092 [Note] InnoDB: Not using CPU crc32 instructions 
>  2013-11-23 14:46:58 1092 [Note] InnoDB: Initializing buffer pool, size = 16.0M 
>  2013-11-23 14:46:58 1092 [Note] InnoDB: Completed initialization of buffer pool 
>  2013-11-23 14:46:58 1092 [Note] InnoDB: Highest supported file format is Barracuda. 
>  2013-11-23 14:46:58 1092 [Warning] InnoDB: The log sequence number in the ibdata files is higher than the log sequence number in the 
> ib_logfiles! Are you sure you are using the right ib_logfiles to start 
> up the database. Log sequence number in the ib_logfiles is 1600607, 
> logsequence numbers stamped to ibdata file headers are between 1600617 
> and 1600617. 
>  2013-11-23 14:46:58 1092 [Note] InnoDB: The log sequence numbers 1600617 and 1600617 in ibdata files do not match the log sequence 
> number 1600607 in the ib_logfiles! 
>  2013-11-23 14:46:58 1092 [Note] InnoDB: Database was not shutdown normally! 
>  2013-11-23 14:46:58 1092 [Note] InnoDB: Starting crash recovery. 
>  2013-11-23 14:46:58 1092 [Note] InnoDB: Reading tablespace information from the .ibd files... 
>  2013-11-23 14:46:58 1092 [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace 
> mysql/slave_relay_log_info uses space ID: 3 at filepath: 
> .\mysql\slave_relay_log_info.ibd. Cannot open tablespace 
> wordpress/wp_terms which uses space ID: 3 at filepath: 
> .\wordpress\wp_terms.ibd 
>  InnoDB: Error: could not open single-table tablespace file .\wordpress\wp_terms.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. 
+0

得到了〜同樣的錯誤任何表:無法找到有效的表空間文件:... 重新啓動mysql的的伎倆。使用EasyPHP 14.1 VC 11 – magnetik

回答

1

我不知道這個問題的原因,但這裏是我如何解決它。

我已經通過將innodb_file_per_table = OFF添加到我的MySQL配置文件中來禁用每個表的innodb文件。

然後對於每個被破壞的表:

[ERROR] InnoDB: Could not find a valid tablespace file for '<base>/<table>'

我創造我的MySQL安裝文件夾data一個文件夾<base>。並在一個名爲<table>.frm的空文件中。

然後連接您的數據庫並做DROP TABLE <base>.<table>

DROP應該是成功的,即使錯誤日誌顯示一個錯誤:

InnoDB: Failed to find tablespace for table '"<base>"."<table>"' in the cache. Attempting to load the tablespace with space id 255.

[編輯]如果你在一個基地有很多表,你還可以創建只有文件夾<base>data/目錄中,併發行DROP DATABASE <base>。 !

/\你將失去一個沒有被損壞