XAMPP - MySQL 意外关闭
Posted
技术标签:
【中文标题】XAMPP - MySQL 意外关闭【英文标题】:XAMPP - MySQL shutdown unexpectedly 【发布时间】:2021-05-24 19:30:22 【问题描述】:当我打开 XAMPP 并单击启动 mysql 按钮时,它给了我一个错误。 我之前也启动过,现在不行了。
12:19:12 PM [mysql] 正在尝试启动 MySQL 应用程序... 12:19:12 PM [mysql] 检测到状态更改:正在运行 下午 12:19:13 [mysql] 检测到状态更改:已停止 12:19:13 PM [mysql] 错误:MySQL 意外关闭。 12:19:13 PM [mysql] 这可能是由于端口阻塞,缺少依赖项, 12:19:13 PM [mysql] 权限不当、崩溃或被其他方法关闭 12:19:13 PM [mysql] 按 Logs 按钮查看错误日志并检查 12:19:13 PM [mysql] Windows 事件查看器获取更多线索 12:19:13 PM [mysql]如果您需要更多帮助,请复制并发布此 12:19:13 PM [mysql] 论坛上的整个日志窗口
这是错误日志的内容:
2013-08-02 12:19:12 4536 [注意] 插件 'FEDERATED' 已禁用。 2013-08-02 12:19:12 f64 InnoDB:警告:不推荐使用 innodb_additional_mem_pool_size。此选项可能会在未来的版本中与选项 innodb_use_sys_malloc 和 InnoDB 的内部内存分配器一起删除。 2013-08-02 12:19:12 4536 [注意] InnoDB:InnoDB 内存堆已禁用 2013-08-02 12:19:12 4536 [注意] InnoDB:互斥锁和 rw_locks 使用 Windows 互锁函数 2013-08-02 12:19:12 4536 [注意] InnoDB:压缩表使用 zlib 1.2.3 2013-08-02 12:19:12 4536 [注意] InnoDB:不使用 CPU crc32 指令 2013-08-02 12:19:12 4536 [注意] InnoDB:初始化缓冲池,大小 = 16.0M 2013-08-02 12:19:12 4536 [注意] InnoDB:缓冲池初始化完成 2013-08-02 12:19:12 4536 [注意] InnoDB:支持的最高文件格式是梭子鱼。 2013-08-02 12:19:12 4536 [注意] InnoDB:ibdata 文件中的日志序列号 0 和 0 与 ib_logfiles 中的日志序列号 1616798 不匹配! 2013-08-02 12:19:12 4536 [注意] InnoDB:数据库未正常关闭! 2013-08-02 12:19:12 4536 [注意] InnoDB:开始崩溃恢复。 2013-08-02 12:19:12 4536 [注意] InnoDB:从 .ibd 文件中读取表空间信息...
最重要的错误信息在这里:
2013-08-02 12:19:12 4536 [错误] InnoDB: 试图打开以前打开的表空间。 以前的表空间 mysql/innodb_table_stats 在文件路径中使用空间 ID:1:.\mysql\innodb_table_stats.ibd。 无法打开使用空间 ID 的表空间 xat/payments 在文件路径:.\xat\payments.ibd
日志的其余部分:
InnoDB:错误:无法打开单表表空间文件 .\xat\payments.ibd InnoDB:我们不继续崩溃恢复,因为表可能会变成 InnoDB:如果我们无法将 InnoDB 日志中的日志记录应用到它,则会损坏。 InnoDB:修复问题并启动 mysqld: InnoDB:1)如果文件有权限问题,mysqld不能 InnoDB:打开文件,你应该修改权限。 InnoDB:2)如果不需要该表,或者您可以从备份中恢复它, InnoDB:然后你可以删除 .ibd 文件,InnoDB 会做一个正常的 InnoDB:崩溃恢复并忽略该表。 InnoDB:3)如果文件系统或磁盘损坏,您无法删除 InnoDB:.ibd 文件,可以在 my.cnf 中设置 innodb_force_recovery > 0 InnoDB:并强制 InnoDB 在此处继续崩溃恢复。
这些错误的原因是什么,我该如何纠正它们?
【问题讨论】:
【参考方案1】:重要提示:请不要删除
ibdata1
文件。您可以销毁所有数据库。
相反,首先尝试使用 XAMPP 中包含的 MySQL 备份文件夹。接下来的步骤也是如此:
-
将文件夹
mysql/data
重命名为 mysql/data_old
复制mysql/backup
文件夹并将其命名为mysql/data
将所有数据库文件夹从 mysql/data_old
复制到 mysql/data
(mysql
、performance_schema
和 phpmyadmin
文件夹除外)
将mysql/data_old/ibdata1
文件复制到mysql/data
文件夹中
从 XAMPP 控制面板启动 MySQL
然后,瞧!
【讨论】:
这是最好的答案,不要求您删除任何文件或文件夹,重要的是,它有效。 我已经多次求助于这个答案,我什至写了一个 PowerShell 脚本来自动化这个过程:gist.github.com/josemmo/24e35f2b4984a4370ce2c164f5956437 传奇!!你救了我的命 是的,这是最好的答案。我的坏我没有先尝试过。优秀的答案。你保存了我的数据库数据和很多麻烦。向你致敬! 根据@josemmo gist,在将目录复制到 mysql/data 时要注意排除 mysql、performance_schema、phpmyadmin【参考方案2】:重要提示 删除此文件可能会导致任何现有 MySQL 数据不可用。谨慎使用
嘿,我刚刚做了这个,它成功了:
-
退出 Xampp 服务器
转到您的
C:\xampp\mysql\data
目录
删除 ibdata1
文件
重启 xampp 服务器
它应该可以工作
【讨论】:
这很有效,应该被标记为正确答案。但是将文件重命名为 ibdata1.bak 而不是删除它。只是为了保存。 这当然会破坏存储在该文件中的所有数据(在将innodb_file_per_table
设置为启用之前创建的所有 InnoDB 表)。日志消息中建议的方法对我来说似乎更胜一筹。
我还必须删除 ib_logfile0
和 ib_logfile1
才能使其正常工作
哎哟!吹走ibdata1
相当于丢失了所有数据(或至少丢失了所有ENGINE=Innodb
!
你能做的最受好评的无法解释的鲁莽的事情【参考方案3】:
如果上面的答案都不行,可以尝试删除data中的所有文件,文件夹除外
转到: C:\xampp\mysql\data
之后: 转到:C:\xampp\mysql\bin
然后用记事本打开my.ini ,它看起来像这样。
然后删除或注释掉3306端口,改成8111,然后用管理员运行xamp,就可以正常运行了。
【讨论】:
现在,我在 xampp 中没有收到该错误,但 phpmyadmin 仍然无法正常工作 谢谢,@fabrizio valencia 修复效果很好,但经过两到三遍后它就不再工作了,这作为第二次修复解决了。【参考方案4】:-
转到 mysql/data/
删除所有随机文件(实际数据库文件夹除外)
重新启动 Apache 和 MySQL。
它应该修复它。
【讨论】:
它删除了我所有的数据。有很多数据。 我确认删除文件会使所有数据库无法使用。表格文件存在,但无法显示。【参考方案5】:工作解决方案:- 按照下面列出的步骤。
第 1 步。将文件夹 c:\xampp\mysql\data 重命名为 c:\xampp\mysql\data_bkp(可以使用任何名称)。
第 2 步。创建一个新文件夹 c:\xampp\mysql\data。
第 3 步。将 mysql\backup 中的内容复制到新的 mysql\data 文件夹中。
第 4 步。将 mysql\data_bkp 中的所有数据库文件夹复制到 mysql\data(跳过 mysql\data_bkp 中的 mysql、performance_schema 和 phpmyadmin 文件夹)。 重要提示:- 粘贴时请不要替换现有文件(点击跳过这些文件)
第5步。最后从mysql\data_bkp复制ibdata1文件并将其替换到mysql\data文件夹中。
第 6 步。从 XAMPP 控制面板启动 MySQL。
而且,完成了。没有数据库丢失,没有端口改变,没有以管理员身份运行,没有强制恢复,没有杀死 mysqld 进程,没有从以前的版本恢复,没有更多的错误。
【讨论】:
虽然此步骤有效,但请确保您对其进行测试。如果您有一个现有的数据库表,它将全部中断。如果您有新安装的 XAMPP,那么这可能会对您有所帮助。 @Dexter 我已经在拥有 10 多个数据库表的机器上对其进行了测试。对我来说什么都没有。顺便说一句,谢谢你让我知道这件事。 这项工作对我来说谢谢【参考方案6】:只需两步
转到 xampp\mysql\backup 复制备份文件夹中的所有内容
转到 xampp\mysql\data 粘贴从备份文件夹复制的数据文件夹中的所有内容
仅此而已。
也可以按照视频说明进行修复,不会丢失任何数据:
https://www.youtube.com/watch?v=hB1wshpP3Jc
【讨论】:
这个答案将修复上述错误但也会导致另一个错误,您数据库中的 django 迁移表将消失,因此您将收到错误django_migration table does not exist
这是因为您从数据目录中删除了 ibdata1。我还提到了在不丢失任何数据的情况下按照描述链接解决。
像魅力一样工作,谢谢!【参考方案7】:
当您不以管理员身份运行 XAMPP 时,关闭 MySQL 经常会导致损坏,这意味着您必须修复或删除您的表。为避免这种情况,您需要以管理员身份运行 XAMPP,或使用正确的命令提示符方法关闭 MySQL。
您可以按照 Kratos 的建议删除 ibdata1
,但这可能会使您的数据库损坏,因为您的数据库的其他部分仍在 /mysql/data/
文件夹中。就我而言,这些残留数据阻止了我成功安装 WordPress。
消除损坏的更简洁方法是还原整个/mysql/data/
文件夹。 Windows 有内置的文件夹版本控制——右键单击/mysql/data/
并选择Restore previous versions
。然后,您可以删除该文件夹的当前内容并将其替换为旧版本的内容。
附录:为确保您不会忘记以管理员身份运行 XAMPP,您可以右键单击 XAMPP 快捷方式,转到Properties
,然后转到Advanced
,最后勾选Run as administrator
。
【讨论】:
这应该被接受为正确答案。如果删除 ibdata1,将会有大量的孤立表。 谢谢,您在尝试了很多不同的事情后解决了我的问题。 也为我解决了问题 很好的解释:D 谢谢。 “恢复以前的版本”选项仅在您定期在 Windows 中创建恢复点时才有效。 :(【参考方案8】:我的 Xampp MySQL 工作如下:
01.Go to mysql/data/ directory
02. delete the ibdata1 & ib_logfile*(ib_logfile0,ib_logfile1,ib_logfile101) file
03. restart xampp server
【讨论】:
这对我来说是最有效的方法!!【参考方案9】:在尝试启动 mysql 时,我的 C:\xampp\mysql\data\mysql_error.log
中出现了同样的错误。
2013-08-05 01:20:32 6780 [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 test_database/test_table which uses space ID: 3 at filepath:
.\test_database\test_table.ibd
您必须仔细阅读错误。这表示test_database
正在阻止 mysql 启动。
您可以炸毁有问题的数据库,这些步骤可以解决问题:
-
确保 mysql 和 xampp 已完全关闭。
进入你安装mysql的目录,我的是:
C:\xampp\mysql\data
您应该会看到一个文件夹,其中包含您创建的数据库的名称。我的是test_database
。
在其他地方创建一个名为C:\xampp\mysql\data\mysql\backuptablespace
的新文件夹
将有问题的数据库表文件夹拖放(不要删除)到备份目录。
再次尝试启动mysql。对我来说,它按预期在 1 秒内立即启动。
如果它不起作用,请将文件放回你开始的地方,你会回到你开始的地方。
如果您不想删除数据库并且没有备份:
如果您没有表数据的备份,并且由于某些内容已损坏而导致 mysql 无法启动,您将不得不使用消除过程来猜测并检查您所做的究竟是什么损坏了它。请按以下步骤操作:
-
克隆整个
C:\xampp\
并将其存储在安全的地方,这样您就可以回到开始的地方。
使用“二分查找”方法尝试在 mysql 数据库中定位损坏的项目。它可以是文件、表、数据库、用户或任何东西。
删除整个数据库,看看是否允许启动mysql。如果是,则放回数据库并尝试删除一些表。如果没有,请尝试拉出其他内容,直到它开始为止。
尝试从C:\xampp\mysql\data\mysql
中删除这些文件:
数据库文件
数据库MRD
db.MYI
db.opt
用户文件
用户.MYD
用户.MYI
当你启动 mysql 时,试着把东西放回去,直到你找到你添加的阻止它启动的东西。这样做的一个好处是您可以了解 mysql 的工作原理。
核选项:
你做的某件事搞砸了 mysql 服务器。卸载并重新安装 XAMPP 应该可以消除损坏。
【讨论】:
【参考方案10】:在 mysql 配置文件 (my.ini) 的 [mysqld]
部分下方添加以下行,然后重新启动 apache web 服务器和 mysql 服务。
[mysqld]
innodb_force_recovery = 4
【讨论】:
在你做之前先了解你在做什么:dev.mysql.com/doc/refman/5.0/en/forcing-innodb-recovery.html 非常感谢,真的帮了我很多。 最好从值 1 开始,并在每次它不起作用时递增它。值 1-3 被视为已保存。 4-6 可能会损坏数据! 这对我有帮助。正如所指出的,首先使用值 1-3。 2对我有用。我必须转储所有数据库,使用备份文件夹重置 mysql 数据,然后导入转储。如果您想保留数据,这将很有帮助【参考方案11】:第 1 步:完全关闭 Xampp 控制器 第 2 步:打开 C:\xampp\mysql\backup 第 3 步:复制备份文件夹中的所有文件 第 4 步:打开 C:\xampp\mysql\data 第 5 步:粘贴数据文件夹中的所有文件 第 6 步:重新启动 Xampp 控制器
【讨论】:
感谢人对我来说就像一个魅力。 :) 感谢这解决了问题,但我们需要保留旧的 ibdata 文件,否则我们会丢失数据 永远不要那样做。我丢失了数据。【参考方案12】:我也遇到过这个问题,我就是这样解决的。 1.确保xampp不在子目录下。例如,它应该是 C:\xampp 2. 您可能需要以管理员身份运行应用程序。
希望这会奏效!
【讨论】:
【参考方案13】:在我的情况下,我执行了以下步骤并且效果很好:
在 Xampp 控制面板中单击右侧工具栏中的“服务”按钮
然后从服务列表中找到“MySQL”
点击它,然后从面板左侧点击“停止”
返回Xampp控制面板,点击开始。
【讨论】:
谢谢,其他选项都不适合我,这个可以。非常感谢 @user3808307 很高兴它对你有所帮助:) 非常感谢!这真的很简单,而且很有效:)【参考方案14】:切勿删除此文件 (ibdata1
),因为您的所有数据都将被删除!!!
我建议三种方式:
答:
1- 从XAMPP control panel
退出。
1- 将文件夹 mysql/data
重命名为 mysql/data_old
(您可以使用任何名称)
2- 创建一个新文件夹mysql/data
3- 将mysql/backup
中的内容复制到新的mysql/data
文件夹
4- 将 mysql/data_old
中的所有数据库文件夹复制到 mysql/data
(从 data_old 中跳过 mysql、performance_schema 和 phpmyadmin 文件夹)
5- 最后从mysql/data_old
复制ibdata1
文件并将其替换为mysql/data folder
6- 重新启动系统。
B: 1- 停止所有 sql 服务。 2- 接下来,再次启动所有 sql 服务。
C: 1- 打开 XAMPP 控制面板 2-点击Config按钮,在mysql前面,点击my.ini 3- 更改客户端端口和服务器端口。
【讨论】:
更改端口对我有用,但没有其他方法有效【参考方案15】:-
将
xampp/mysql/backup
文件移动到xampp/mysql/data
RUN XAMPP
as Administrator
(确保已安装 mysql,如果已安装,您会看到一个绿色的勾号)
希望对你有帮助!
【讨论】:
【参考方案16】:这就是我所做的。我重新启动了我的电脑。接下来我运行 services.msc。我停止了 MySQL 服务,然后重新启动它。重新启动 Xampp 服务器。
【讨论】:
这不是一个有效的答案! 无效答案【参考方案17】:上述解决方案对我没有用。然后我在下面做了:
我删除了 C:\xampp\mysql\data\ 目录中的所有文件,除了该目录中的文件夹。 它工作得很好,但我以前的数据库现在不工作了。 如果您不在乎,请执行上述操作,它将删除您在 phpmyadmin 中以前的所有数据库。
【讨论】:
【参考方案18】:我遇到了同样的问题,上述解决方案都没有帮助我。 我去mysql配置文件(my.ini),修改了[mysqld]下的端口号。默认mysql运行在3306端口。
port= 3306
我把它改成了,
port= 8111
然后以管理员身份运行。最后这对我有用。
【讨论】:
【参考方案19】:我已经通过在任务管理器中结束 mysqlid 的任务解决了这个问题。
【讨论】:
谢谢,它帮助了我。删除 ib1 的想法为我创造了要解决的新问题。【参考方案20】:以下是解决此问题的方法:
-
转到
C:\xampp\mysql\data
您将看到一个名为 mysql/data 的文件夹
将该文件夹从 mysql/data 重命名为其他名称,例如 mysql/data_not_useful 任何您想提供的名称。
创建一个名为 mysql/data 的新文件夹。
复制mysql/backup的所有文件,粘贴到mysql/data中。
现在转到 mysql/data_not_useful 并从那里复制文件 ibdata1。
然后将其粘贴到 mysql/data 中(您必须替换文件)。
重新启动您的 xampp 服务器。
现在运行您的 mysql 服务器。
【讨论】:
【参考方案21】:转到:c:C:\xampp\mysql
将文件夹“data”重命名为“data_old”(您可以使用任何名称) 创建一个新文件夹“数据” 将“备份”文件夹的内容复制到新的“数据”文件夹中。 将“data_old”的所有内容复制到“data”(跳过那些文件夹“mysql”、“performance_schema”和“phpmyadmin”)***而不替换目标中的文件(跳过这些文件)**
重启 XAMPP 它会起作用的
【讨论】:
跳过文件很重要。它有帮助。【参考方案22】:有同样的问题。
STAEP 1
备份文件夹 xampp/mysql/data(保存为`xampp/mysql/_old_data`)。STAEP 2
转到xampp/mysql/data
并删除所有文件,但不删除文件夹!与数据库。
STAEP 3
在这个阶段,您的数据库将无法工作。您需要转到备份文件夹 `xampp/mysql/_old_data` 并将 "`ibdata1`" 文件复制到 `xampp/mysql/data`。之后一切都按预期工作,包括 phpmyadmin 和控制台。
STAEP 4
如果这没有帮助。您可以删除 xampp/mysql/data 文件夹并将 xampp/mysql/_old_data 重命名回 xampp/mysql/data。 (回滚)并尝试不同的事情。
【讨论】:
【参考方案23】:请确保您没有安装 MySql Server。因为我已经预先安装了 MySql 服务器,并且当我从 xampp 控制面板启动 mysql 时,一些端口冲突正在发生并且它不起作用。所以在从 xampp 控制面板启动 mysql 之前,请确保未安装 mysql 服务器。我使用.net,所以我过去安装了 mysql 服务器。卸载它解决了我的问题....
【讨论】:
【参考方案24】:这意味着您已经在端口 3306 上运行了一个 MySQL 数据库。
在 XAMPP 控制面板中,按“配置”按钮,然后按“my.ini”。在此之后,按 Ctrl-F 并搜索“3306”。用您选择的不同端口号替换您找到的任何“3306”(您可以选择 3307 或 3308 - 我选择了 2811 并且它有效)。
替换所有写入“3306”的位置后,保存文件并再次按控制面板上的“开始”。
【讨论】:
【参考方案25】:我解决了类似的 MySQL 错误,我认为这个答案将帮助您修复相同类型的 MySQL 数据库错误。
解决方案:
进入mysql数据库的“data”目录。 我将 XAMPP 安装在我的计算机上的 D: 驱动器上,并且我计算机的 mysql“数据”目录位置是“D:\xampp\mysql\data\”。您可能有不同的位置。备份 MySQL“数据”文件夹
首先,您应该使用创建“数据”文件夹的备份 任何压缩软件。
给一个名称,如“data_backup.zip”或任何你想要的压缩类型。
我使用winrar压缩软件压缩备份mysql“data”文件夹。
重命名“数据”文件夹
将“data”文件夹重命名为“data-oldfiles”。这对于将数据目录重命名为任何新目录名称非常重要。创建一个新的“数据”文件夹
创建一个新文件夹并将文件夹名称命名为“data” 为了解决这个问题,我们需要在 mysql 数据库中新建一个“data”目录。从“备份”文件夹复制内容
转到“备份”文件夹并复制所有文件。 将备份文件夹中的文件粘贴到数据文件夹中 现在从 XAMPP 启动 MySQL 数据库。 您的 MySQL 数据库将正常启动而不会显示任何错误。传输所有 MySQL 项目数据库、数据文件和日志文件
如果您有许多用于各种项目的数据库,那么您必须将所有数据库从“data-oldfiles”文件夹转移到“data”文件夹。
从数据旧文件中复制所有数据库并粘贴到数据文件夹中。
现在您必须将数据文件“ibdata1”和所有日志文件“ib_logfile0, ib_logfile1”从数据旧文件夹复制到数据文件夹。
如果您有许多 id_logile,则将它们全部复制。
现在从 XAMPP 启动 MySQL。
转到 phpMyAdmin 以检查所有数据库是否可用和工作。
现在从 localhost 启动您的任何网站项目以检查 MySQL 数据库。
问题解决了!!
现在您将看到问题已解决并出现错误消息“错误:MySQL 意外关闭”。不会再显示了。 如果您对此问题有任何疑问,请随时在 cmets 部分提出任何问题。您可以在下面的链接中阅读详细教程: Error: MySQL shutdown unexpectedly – Solution in 5 easy steps
您也可以观看视频教程来解决问题:
[Solved] Error: MySQL shutdown unexpectedly
【讨论】:
【参考方案26】:转到 C:\xampp\mysql\backup。
复制所有文件。
将它们粘贴到 C:\xampp\mysql\data 中。
如果 Windows 要求您替换某些文件,请替换它们。
如果您的 XAMPP 控制窗格处于活动状态,请将其关闭。
到 C:\xampp 找到 xampp-control,运行它。
启动 Apache,启动 MySQL。
就是这样。
享受吧!
【讨论】:
这个解决方案对我有用,很遗憾没有接受答案 非常感谢您在这里的解决方案,我使用您的方法对我有用,我只想再评论一步,我们必须重用 C:\xampp\mysql\data 中的旧 ibdata1 文件.此文件不能替换,否则数据库表将被锁定,谢谢【参考方案27】:我也遇到过同样的问题,但我只需要关闭XAMPP控制面板,进入安装XAMPP的文件夹,找到xampp-control.exe并以管理员身份运行,然后启动服务。
【讨论】:
【参考方案28】:对我有用的是 (No File Delete
):
-
首先我在
XAMPP panel
中为MySql
打开Logs
。
最后它说您正在端口3306
中运行另一个mysqlid 实例
我打开了我的task manager(Ctrl+Shift+Esc)
,然后找到mysqlid
和End the task
。
【讨论】:
【参考方案29】:在我将 mysql 数据和 htdocs 同步到保管箱的情况下,我只需要删除 mysql/data 文件夹和子文件夹中的冲突文件。冲突的文件可以通过其名称来识别,Dropbox 会告诉您这一点。它为我解决了这个问题。
【讨论】:
【参考方案30】:确保系统时间正确。我的不知何故设置为 2040 年,更正日期解决了问题。
【讨论】:
以上是关于XAMPP - MySQL 意外关闭的主要内容,如果未能解决你的问题,请参考以下文章