XAMPP - 错误:MySQL意外关闭

时间:2013-03-02 02:03:43

标签: mysql xampp

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

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

帮助?

22 个答案:

答案 0 :(得分:9)

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

  1. class RetrieveFeedTask extends AsyncTask<Void, Void, String> { static final String API_URL = "http://numbersapi.com/random/trivia?json"; private Exception exception; public String finalString; protected void onPreExecute() { } protected String doInBackground(Void... urls) { try { URL url = new URL(API_URL ); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); try { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); StringBuilder stringBuilder = new StringBuilder(); while ((finalString = bufferedReader.readLine()) != null) { stringBuilder.append(finalString).append("\n"); } bufferedReader.close(); return stringBuilder.toString(); } finally{ urlConnection.disconnect(); } } catch(Exception e) { Log.e("ERROR", e.getMessage(), e); return null; } } protected void onPostExecute(String response) { if(response == null) { response = "THERE WAS AN ERROR"; } try { JSONObject object = (JSONObject) new JSONTokener(response).nextValue(); finalString = object.getString("text"); Log.i("Here",finalString); } catch (JSONException e) { } } public String getString() { return this.finalString; } } 个文件移至xampp/mysql/backup
  2. 以管理员身份运行XAMPP
  3. 它对我有用:)

答案 1 :(得分:6)

退出你的Skype并尝试,如果skype是opne


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



在Skype中按照以下步骤操作 enter image description here

答案 2 :(得分:4)

首先,您需要将以下副本保存在硬盘中。

C:\ xampp \ mysql \ backup

C:\ xampp \ mysql \ data

之后

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

现在,您的mysql将在phpmyadmin中运行,但您的表将显示“在引擎中找不到表”

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

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

答案 3 :(得分:3)

你必须:

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

答案 4 :(得分:2)

  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

答案 5 :(得分:2)

这对我有用,

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

注意!不要删除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

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

答案 8 :(得分:1)

此问题的最佳解决方案是在文件夹 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服务,肯定会有效。

答案 9 :(得分:0)

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

首先登录Skype并导航到&#34;工具&lt;选项&lt;高级&lt; 。连接#&34; 然后选中显示&#34;使用端口80和443进行其他传入连接的复选框。&#34;保存,关闭并退出Skype。

接下来,在您的XAMPP控制面板上,单击&#34; config&lt;的my.ini&#34;并从&#34; 3306&#34;更改第19和27行(应该有port = 3306);到&#34; 3307。&#34;

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

$ cfg [&#39;服务器&#39;] [$ i] [&#39;主持人&#39;] =&#39; 127.0.0.1&#39;;

您需要添加&#34; 3307&#34;如下:

$ cfg [&#39;服务器&#39;] [$ i] [&#39;主机&#39;] =&#39; 127.0.0.1:3307&#39;;

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

接下来,您需要导航到以下位置&#34; xampp&lt; phpMyAdmin&lt; config.inc&#34;在您的计算机上,使用文本编辑器打开并编辑该文件。您需要在密码的单引号和更改&#34; AllowNoPassword&#34;之间插入密码的哈希版本。从真实到虚假。

而且,应该这样做。

答案 10 :(得分:0)

在我的情况下: 我刚刚更换了

....xampp/mysql/backup files 

进入

**xampp/mysql/data**

它对我有用。

答案 11 :(得分:0)

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

答案 12 :(得分:0)

我只是尝试重新安装XAMPP。

答案 13 :(得分:0)

如果你独立地使用mysql 你可以在运行时停止mysql服务 这些答案中没有一个对我有用 这项工作对我来说

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

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

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

netstat -n -o -a
你会得到一个像这样的屏幕 this.

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

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

taskkill /F /PID 1234

用您各自的PID替换1234。 然后你可以尝试启动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 :(得分:0)

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

->现在重新启动mysql

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

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

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

答案 17 :(得分:0)

以管理员身份运行您的xammp,它可以正常运行

答案 18 :(得分:0)

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

  • 安装Laragon而不是Xampp,您将为我祈祷。

答案 19 :(得分:0)

要解决此问题,

转到您的XAMPP文件夹,

XAMPP-> mysql-> bin->“ my.ini”

打开$ sudo dnf install git $ sudo dnf install pipenv $ git clone https://github.com/DjangoPatternsBook/superbook2.git $ cd superbook2 $ pipenv install --dev 配置文件后,在pipenv --support是一个空闲端口的情况下,将my.ini替换为3306

XAMPP-> php->“ php.ini”

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

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

它工作正常。

答案 20 :(得分:0)

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

答案 21 :(得分:-2)

真正的方法是重新配置您的应用。设置 MYSQL 。您可以再次打开设置并将端口从3306更改为3307

enter image description here