【问题标题】:XAMPP - Error: MySQL shutdown unexpectedlyXAMPP - 错误:MySQL 意外关闭
【发布时间】:2013-02-16 16:04:59
【问题描述】:

由于某种原因,我重新安装了 XAMPP,但 MySQL 无法正常工作,在控制台中出现以下错误:

01:56:03  [mysql]   Error: MySQL shutdown unexpectedly.
01:56:03  [mysql]   This may be due to a blocked port, missing dependencies, 
01:56:03  [mysql]   improper privileges, a crash, or a shutdown by another method.
01:56:03  [mysql]   Check the "/xampp/mysql/data/mysql_error.log" file
01:56:03  [mysql]   and the Windows Event Viewer for more clues

检查“/xampp/mysql/data/mysql_error.log”文件时,我得到:

130302  1:48:06  InnoDB: Waiting for the background threads to start
130302  1:48:07 InnoDB: 1.1.8 started; log sequence number 1600324627
130302  1:48:07 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130302  1:48:07 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130302  1:48:07 [Note] Server socket created on IP: '0.0.0.0'.
130302  1:51:12 [Note] Plugin 'FEDERATED' is disabled.
130302  1:51:12 InnoDB: The InnoDB memory heap is disabled
130302  1:51:12 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130302  1:51:12 InnoDB: Compressed tables use zlib 1.2.3
130302  1:51:12 InnoDB: Initializing buffer pool, size = 16.0M
130302  1:51:12 InnoDB: Completed initialization of buffer pool
130302  1:51:12 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
130302  1:51:12  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
130302  1:51:13  InnoDB: Waiting for the background threads to start
130302  1:51:14 InnoDB: 1.1.8 started; log sequence number 1600324627
130302  1:51:14 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130302  1:51:14 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130302  1:51:14 [Note] Server socket created on IP: '0.0.0.0'.
130302  1:56:01 [Note] Plugin 'FEDERATED' is disabled.
130302  1:56:01 InnoDB: The InnoDB memory heap is disabled
130302  1:56:01 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130302  1:56:01 InnoDB: Compressed tables use zlib 1.2.3
130302  1:56:01 InnoDB: Initializing buffer pool, size = 16.0M
130302  1:56:01 InnoDB: Completed initialization of buffer pool
130302  1:56:01 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
130302  1:56:01  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
130302  1:56:02  InnoDB: Waiting for the background threads to start
130302  1:56:03 InnoDB: 1.1.8 started; log sequence number 1600324627
130302  1:56:03 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130302  1:56:03 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
130302  1:56:03 [Note] Server socket created on IP: '0.0.0.0'.

这只是日志的一部分,完整的有点太大了。

帮助?

【问题讨论】:

标签: mysql xampp


【解决方案1】:

我会尝试重新安装 XAMPP。

【讨论】:

    【解决方案2】:

    如果您的 Skype 已打开,请退出 Skype 并尝试,


    转到您安装的 xampp/wamp,搜索 httpd.conf。 使用 textpad/notepad 打开该文件,搜索 Listen 或 80 , 将监听端口更新为 8081 并保存文件。 重启 xampp/wamp,启动服务器。



    在 Skype 中按照以下步骤操作

    【讨论】:

    • 我在最新的 Skype 版本上找不到高级选项!
    • 还有其他解决方案吗?
    【解决方案3】:

    我发现的一个原因(除了本网站就类似问题给出的其他答案之外没有提到)是转到 Windows 中的任务管理器并停止已经运行的 mysqld 并阻止 mysql 服务器启动。

    【讨论】:

      【解决方案4】:

      您的计算机中可能以前安装了 MySQL 服务器尝试卸载它并在 XAMPP 上启动 MySQL 这解决了我的问题

      【讨论】:

        【解决方案5】:

        你必须:

        • 关闭xampp
        • 转到安装它的文件夹,如果在 (c:) 中可能类似于 C:\xampp\ ,请访问文件夹 C:\xampp\mysql\data
        • 删除文件ibdata1
        • 再次启动 XAMPP。

        【讨论】:

        • 这并没有帮助我解决同样的问题。
        • 不要删除 ibdata1,您必须从备份中复制数据,此时您将需要此文件来恢复您的数据库。
        【解决方案6】:

        解决此问题的最佳方法是打开文件夹 C:\xampp\mysql\bin 中的 mysql 配置指令文件 my.ini 并更改信息与端口有关,通常有些程序占用端口号。 3306因为它停止工作,现在你按照两个步骤让它工作。

        enter code here
        
            Step-1. Search for ['client'],  you can see some thing like this
        
                    [client] 
                    # password       = your_password 
                    port            = 3306
                    socket          = "C:/xampp/mysql/mysql.sock"
         Now in the port section remove 3306 and add port = 3306 > 3307 as shown   below.
        
                    [client] 
                    # password       = your_password 
                    port            = 3306 > 3307
                    socket          = "C:/xampp/mysql/mysql.sock"
        
        
            Step -2. Similarly Search for  ['mysqld'], you can see something like this 
        
                    [mysqld]
                    port= 3306
                    socket = "C:/xampp/mysql/mysql.sock"
                    basedir = "C:/xampp/mysql" 
                    tmpdir = "C:/xampp/tmp" 
                    datadir = "C:/xampp/mysql/data"
                    pid_file = "mysql.pid"
                    # enable-named-pipe
                    key_buffer = 16M
                    max_allowed_packet = 1M
                    sort_buffer_size = 512K
                    net_buffer_length = 8K
                    read_buffer_size = 256K
                    read_rnd_buffer_size = 512K
                    myisam_sort_buffer_size = 8M
                    log_error = "mysql_error.log"
        
        
                    Now here change the port number 3306 to 3307 and add a line "innodb_force_recovery = 1" exactly as shown below.
        
        
                    [mysqld]
                    port= 3307
                    socket = "C:/xampp/mysql/mysql.sock"
                    basedir = "C:/xampp/mysql" 
                    tmpdir = "C:/xampp/tmp" 
                    datadir = "C:/xampp/mysql/data"
                    pid_file = "mysql.pid"
                    # enable-named-pipe
                    key_buffer = 16M
                    max_allowed_packet = 1M
                    sort_buffer_size = 512K
                    net_buffer_length = 8K
                    read_buffer_size = 256K
                    read_rnd_buffer_size = 512K
                    myisam_sort_buffer_size = 8M
                    log_error = "mysql_error.log"
                    innodb_force_recovery = 1
        

        就是这样,重启你的mysql服务,它肯定会工作。

        【讨论】:

          【解决方案7】:

          只需以管理员身份运行 xammp,它就可以工作

          【讨论】:

            【解决方案8】:

            对于搜索并按下此链接的任何人,我通过简单地搜索 mysql 通知程序并停止 mysql 在那里运行来解决它,然后再次在 xampp 中运行 mysql 并运行。为什么这行得通?我不是专家,但我认为这很容易:端口已被 mysql 通知程序占用,因此不得不将其停在那里并在此处运行。

            【讨论】:

              【解决方案9】:

              我是 XAMPP 的新手,但我发现这些建议的组合效果最好(至少在带有最新版本 XAMPP 的 Windows 8.1 上。请注意,我测试过的计算机也有Skype)。

              首先登录到 Skype 并导航到“工具

              接下来,在 XAMPP 控制面板上,单击“config

              另外,您需要导航到 xampp

              $cfg['Servers'][$i]['host'] = '127.0.0.1';

              您需要添加“3307”,如下所示:

              $cfg['Servers'][$i]['host'] = '127.0.0.1:3307';

              现在,打开您的浏览器,当您输入“localhost”时,您应该会看到 xampp 页面。 此外,如果这是您第一次使用 xampp,您可能会在 localhost/phpmyadmin/ 页面上看到有关您缺少密码的警告(以粉红色突出显示)。这很容易通过转到 phpmyadmin 中的“用户帐户”选项卡,单击“编辑权限”并输入密码来解决。请记住保存您创建的任何和所有密码的散列版本,因为我们将在接下来使用它! -我打开记事本并保存(并编号)它们。请注意,当您更改当前会话的密码时,phpMyadmin 会通知您(这将显示在您的 phpMyadmin 页面顶部,非常重要,因为您需要密码的特定哈希版本)。

              接下来,您需要导航到计算机上的以下位置“xampp

              而且,应该这样做。

              【讨论】:

                【解决方案10】:

                就我而言: 我刚换了

                ....xampp/mysql/backup files 
                

                进入

                **xampp/mysql/data**
                

                它对我有用。

                【讨论】:

                  【解决方案11】:

                  如果 Apache 运行时没有任何问题,并且您发现系统安全设置有一些阻塞,只需允许它而不是阻塞或关闭对话框。 并将 MySQL 的端口号更改为 3607 之前的 3606 。 它对我有用。

                  【讨论】:

                    【解决方案12】:

                    就我而言,我做了两件事:

                    1. xampp/mysql/backup 文件移动到xampp/mysql/data
                    2. 以管理员身份运行 XAMPP

                    它对我有用:)

                    【讨论】:

                    • 不要这样做,你会丢失所有的表,我这样做了,现在面临“引擎中不存在表”
                    • 正如@AlauddinAhmed 所说。现在如何恢复表数据?
                    • 为什么这个ans有很多赞同?请不要尝试此操作,您将丢失所有表和所有数据库。
                    • 虽然 MySQL 将重新开始工作,但您将丢失所有数据。一个没用的方法。不要这样做。如果您非常热衷于投票,请先备份您的备份文件夹。
                    • 不要尝试这种方法。您将丢失数据库表。如果你想尝试,那么只需先备份数据文件夹,然后再尝试。
                    【解决方案13】:

                    如果你独立安装了 mysql 如果正在运行,您可以停止 mysql 服务 这些答案中没有一个对我有用 这对我有用

                    【讨论】:

                      【解决方案14】:

                      确保在采取任何行动之前备份上述文件夹!

                      这对我有用,

                      1. 退出 XAMPP
                      2. 剪切C:\xampp\mysql\backup中的所有文件
                      3. 将文件粘贴和替换到 C:\xampp\mysql\data
                      4. 以管理员身份运行 XAMPP

                      【讨论】:

                      • 谢谢。对于那些没有端口保护问题的人来说,这也应该是一个正确的答案。有谁知道为什么会发生这种情况 - 为什么 XAMPP 将 mysql 数据文件放在备份中?是因为某种更新吗?
                      • 可能是最好的选择,有人说改变端口会变得很乱,但这很简单……我只是复制和粘贴文件,保持备份文件不变。
                      • 确保备份数据文件夹(如 data_old)并创建新文件夹数据,然后从备份中粘贴。
                      【解决方案15】:

                      首先,我知道它已经晚了,所以我不知道是否有人会支持它,但是哦,没关系,, 其次,卸载 xampp 可能对您没有任何好处,因为使用端口 3306(Mysql 的默认端口)的进程仍将在您系统的某个位置运行。可能是Skype,但可能不是Skype。

                      所以最好的方法是找出哪个进程正在使用端口 3306,然后终止该进程。

                      所以要找出哪个进程正在使用端口 3306,打开命令提示符,然后键入

                      netstat -n -o -a
                      

                      你会得到一个像 this.

                      然后查找端口号为 3306 的地址 并找出对应的PID。

                      然后只需以管理员身份打开命令提示符并键入

                      taskkill /F /PID 1234
                      

                      将 1234 替换为您各自的 PID。 然后你可以尝试启动mysql,它会工作。


                      现在如果你懒得在重启电脑的时候从头再来一遍,,,

                      您可以简单地使用以下批处理脚本来自动终止进程并享受:)

                      @echo off
                      setlocal enableextensions
                      set "port=3306"
                      for /f "tokens=1,4,5" %%a in (
                          'netstat -aon ^| findstr /r /c:"[TU][CD]P[^[]*\[::\]:%port%"'
                      ) do if "%%a"=="UDP" (taskkill /F /PID %%b) else (taskkill /f /PID %%c)
                      endlocal
                      pause
                      

                      将它保存为anything.bat 并在每次你想使用mysql 时运行它。 :)


                      【讨论】:

                        【解决方案16】:

                        真正的方法是RECONFIGURE你的应用程序。设置MYSQL。你可以再次打开你的设置并将端口从3306更改为3307 .

                        【讨论】:

                          【解决方案17】:

                          ** -> "xampp->mysql->data" 从data文件夹中剪切所有文件并粘贴到另一个文件夹

                          ->现在重启mysql

                          -> 将文件夹中的所有文件夹粘贴到 myslq->data 文件夹

                          并将 ib_logfile0.ib_logfile1 、 ibdata1 从您的文件夹粘贴到数据文件夹中。

                          您的数据库和数据现在可以在 phpmyadmin 中使用..**

                          【讨论】:

                          • 为您的答案添加解释会有所帮助
                          • 在任何可以复制mysql->data文件夹所有文件的驱动器中创建一个文件夹,然后清理data文件夹并从xampp控制面板重新启动mysql,。然后仅将所有文件夹而不是文件从复制文件夹移动到 mysql->data 文件夹,并将文件 ib_logfile0、ib_logfile1、ibdata1 从复制文件夹移动到数据文件夹,以便您的数据库和表以及表的数据在 phpmyadmin 中可用
                          【解决方案18】:

                          首先,您需要在硬盘的某处保留以下副本。

                          C:\xampp\mysql\备份

                          C:\xampp\mysql\data

                          之后

                          复制“C:\xampp\mysql\backup”中的所有内容并粘贴并替换它
                          "C:\xampp\mysql\data"

                          现在您的 mysql 将在 phpmyadmin 中工作,但您的表将显示“引擎中未找到表”

                          为此,您必须转到“备份和数据文件夹”的副本 已在您的硬盘和数据文件夹中创建的副本 “ibdata1”文件和过去并替换在“C:\xampp\mysql\data”中。

                          现在您的表格数据将可用。

                          【讨论】:

                          • 最佳答案,谢谢!
                          • 这解决了这个问题。非常感谢。
                          • 这一定是最好的答案。谢谢老兄。
                          • 最佳答案。这是有道理的,而且是直截了当的
                          【解决方案19】:

                          我尝试了所有方法,但没有找到完美的解决方案!

                          • 安装 Laragon 而不是 Xampp,你会为我祈祷的。

                          【讨论】:

                          【解决方案20】:

                          为了解决这个问题,

                          转到您的 XAMPP 文件夹,

                          XAMPP -> mysql -> bin -> "my.ini"

                          打开my.ini 配置文件后,在几个地方将3306 替换为3308,因为3308 是一个空闲端口。

                          XAMPP -> php -> "php.ini"

                          执行与“my.ini”文件中相同的操作,将端口3306 更改为3308

                          然后,重新启动 XAMPP 服务器。

                          效果很好。

                          【讨论】:

                            【解决方案21】:
                            1. 将文件夹 mysql/data 重命名为 mysql/data_old(可以使用任何名称)
                            2. 新建文件夹 mysql/data 将驻留在 mysql/backup 中的内容复制到新的 mysql/data 文件夹中
                            3. 将 mysql/data_old 中的所有数据库文件夹复制到 mysql/data(跳过 data_old 中的 mysql、performance_schema 和 phpmyadmin 文件夹)
                            4. 最后从mysql/data_old复制ibdata1文件,替换到mysql/data文件夹中
                            5. 从 XAMPP 控制面板启动 MySQL

                            【讨论】:

                              【解决方案22】:

                              小心!不要删除 ibdata1 文件!

                              只需按照这些步骤操作即可。

                              1. 将文件夹C:\xampp\mysql\data重命名为C:\xampp\mysql\data_old(可以使用任何名称)
                              2. 新建文件夹C:\xampp\mysql\data
                              3. C:\xampp\mysql\backup 中的内容复制到新的C:\xampp\mysql\data 文件夹中
                              4. C:\xampp\mysql\data_old 中的所有数据库文件夹复制到C:\xampp\mysql\data(跳过C:\xampp\mysql\data_old 中的mysql、performance_schema 和phpmyadmin 文件夹)
                              5. 最后从C:\xampp\mysql\data_old复制ibdata1文件并替换到C:\xampp\mysql\data文件夹中
                              6. 现在从 XAMPP 控制面板启动 MySQL

                              一切都完成了,尽情享受吧……

                              【讨论】:

                              • Windows 用户的完美答案,谢谢
                              猜你喜欢
                              • 2021-01-04
                              • 2017-10-01
                              • 2018-03-29
                              • 2019-01-25
                              • 2018-04-24
                              • 1970-01-01
                              • 2021-03-18
                              • 2015-08-11
                              • 2015-06-10
                              相关资源
                              最近更新 更多