24

由于某种原因,我重新安装了 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'.

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

帮助?

4

22 回答 22

50

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

这对我有用,

  1. 退出 XAMPP
  2. 剪切C:\xampp\mysql\backup中的所有文件
  3. 将文件粘贴并替换到C:\xampp\mysql\data
  4. 以管理员身份运行 XAMPP
于 2017-05-16T11:45:28.033 回答
35

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

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

它对我有用:)

于 2017-01-26T15:13:55.873 回答
16

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

C:\xampp\mysql\备份

C:\xampp\mysql\数据

之后

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

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

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

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

于 2020-03-22T12:31:05.373 回答
6

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

或者

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



在 Skype 中按照以下步骤操作 在此处输入图像描述

于 2013-05-03T04:53:09.857 回答
3
  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
于 2020-10-15T18:39:22.163 回答
3

警告!不要删除 ibdata1 文件!

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

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

一切都完成了,享受...

于 2021-03-12T05:25:52.303 回答
2

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

于 2017-01-13T14:18:38.517 回答
1

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

于 2014-07-24T12:56:32.067 回答
1

你必须:

  • 关闭 xampp
  • 转到您安装它的文件夹,如果在 (c:) 中可能类似于 C:\xampp\ ,请访问文件夹C:\xampp\mysql\data
  • 删除文件ibdata1
  • 再次启动 XAMPP。
于 2015-02-28T20:21:28.967 回答
1

真正的方法是RECONFIGURE your app.with setup of MYSQL 。你可以再次打开你的设置并将端口从 3306 更改为 3307

在此处输入图像描述

于 2017-11-17T09:52:06.983 回答
1

为了解决这个问题,

转到您的 XAMPP 文件夹,

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

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

XAMPP -> php -> “php.ini”

与在“my.ini”文件中所做的相同,将端口更改33063308.

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

它工作正常。

于 2020-08-21T11:43:17.837 回答
0

我只是尝试重新安装 XAMPP。

于 2013-03-02T02:06:02.367 回答
0

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

于 2013-12-06T12:16:16.487 回答
0

这个问题的最佳解决方案是打开文件夹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服务,它肯定会工作。

于 2015-08-12T08:08:26.843 回答
0

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

于 2016-06-23T19:34:26.220 回答
0

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

首先登录到 Skype 并导航到“工具 < 选项 < 高级 < 连接”。然后选中“使用端口 80 和 443 进行其他传入连接”框。保存、关闭并退出 Skype。

接下来,在 XAMPP 控制面板上,单击“config < my.ini”并将第 19 行和第 27 行(端口应为 3306)从“3306”更改为“3307”。

此外,您需要导航到 xampp < phpMyAdmin < config.inc 并更改第 27 行,这应该是这样的:

$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 < phpMyAdmin < config.inc”,然后使用文本编辑器打开并编辑该文件。您需要在密码的单引号之间输入密码的散列版本,并将“AllowNoPassword”从 true 更改为 false。

而且,应该这样做。

于 2016-11-17T23:06:14.693 回答
0

就我而言:我刚刚更换了

....xampp/mysql/backup files 

进入

**xampp/mysql/data**

它对我有用。

于 2016-12-20T06:49:59.090 回答
0

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

于 2017-02-14T02:50:09.847 回答
0

嗯,第一件事,我知道它迟到了,所以我不知道是否有人会支持它,但是好吧,它还可以,其次,卸载 xampp 可能对你没有任何好处,因为使用端口 3306(Mysql 的默认端口)的进程仍然是在系统的某个地方运行。可能是Skype,但可能不是Skype。

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

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

netstat -n -o -a

你会得到一个这样的屏幕

然后查找端口号为 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 时运行它。:)


于 2017-11-06T15:40:07.100 回答
0

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

-> 现在重新启动 mysql

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

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

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

于 2019-05-21T12:21:45.193 回答
0

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

  • 安装 Laragon 而不是 Xampp ,你会为我祈祷。
于 2020-07-26T16:16:20.700 回答
-3

只需以管理员身份运行 xammp 即可

于 2015-10-14T13:13:25.773 回答