Mysql

MySQL 錯誤 2006 MySQL 伺服器在 Max OS X 10.8.3 上使用 homebrew 升級到 5.6.10 後消失了

  • July 15, 2015

我使用自製軟體升級了我在 Mac OS X 10.8.3 上安裝的 MySQL

brew install mysql

一切似乎都很順利,但……事實證明並非如此。

我無法添加新使用者(無論是通過命令行還是通過 phpmyadmin。我總是收到錯誤消息

Error in processing request: #2006 MySQL server has gone away

我可以毫無問題地創建新數據庫,並且可以毫無問題地安裝,例如 Joomla 3.1.1。

但是,當我嘗試在我的 Joomla 安裝中安裝一個新的擴展時,我得到了錯誤。例如,當我嘗試從 NoNumber 安裝組件時收到以下錯誤:

1062 Duplicate entry '1' for key 'PRIMARY' SQL=INSERT INTO `u5z87_extensions` (`name`,`type`,`element`,`folder`,`client_id`,`enabled`,`access`) VALUES ('plg_system_nnframework','plugin','nnframework','system','0','1','1')

許多其他擴展也是如此。

我試圖用

mysql.server start --log-warnings=2

它開始沒有問題

Starting MySQL
SUCCESS!

我查找了報告錯誤 #2006 以及如何解決它們的問題,他們提到修改 /etc/my.cnf 但我的系統上沒有 /etc/my.cnf 配置文件,也沒有在之前安裝 MySQL 5.5.29(也安裝了自製軟體)中,我沒有任何問題。

我跑brew doctor了,輸出如下

$ brew doctor
Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.

Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:

   /usr/local/opt/php54/bin/php-config

的輸出brew --config也如下:

$ brew --config
HOMEBREW_VERSION: 0.9.4
ORIGIN: https://github.com/mxcl/homebrew
HEAD: 86ce842c700a47abdc354e80cc3b0b3938ab2132
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
CPU: 8-core 64-bit nehalem
OS X: 10.8.3-x86_64
Xcode: 4.6.2
CLT: 4.6.0.0.1.1365549073
LLVM-GCC: build 2336
Clang: 4.2 build 425
X11: 2.7.4 => /opt/X11
System Ruby: 1.8.7-358
Perl: /usr/bin/perl
Python: /usr/bin/python
Ruby: /Users/alisamii/.rvm/rubies/ruby-1.9.3-p374/bin/ruby

進一步探索,我試圖恢復到我以前安裝的 MySQL 使用

brew switch mysql 5.5.29

這導致以下輸出:

$ brew switch mysql 5.5.29
Cleaning /usr/local/Cellar/mysql/5.5.29
Cleaning /usr/local/Cellar/mysql/5.6.10
135 links created for /usr/local/Cellar/mysql/5.5.29

然後我從命令行訪問 mysql 並執行狀態:

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.5.29, for osx10.8 (i386) using readline 5.1

Connection id:      13
Current database:
Current user:       alisamii@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:        ;
Server version:     5.6.10 Source distribution
Protocol version:       10
Connection:         Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /tmp/mysql.sock
Uptime:         1 hour 56 min 24 sec

如您在上面看到的,它報告mysql Ver 14.14 Distrib 5.5.29, for osx10.8 (i386) using readline 5.1

但是,它也說Server version: 5.6.10 Source distribution

所以有些東西沒有同步。

此外,當我顯示數據庫時,我得到以下輸出:

mysql> show databases
   -> ;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)

但我知道我擁有的不僅僅是一個information_schema數據庫。在 phpMyAdmin 中,我顯示了 14 個數據庫。

所以,不知何故,在我看來,mysql 沒有連接到正確的伺服器,因為 phpmyadmin 報告的伺服器資訊與 mysql 的 status 命令報告的伺服器資訊相同:Software version: 5.6.10 - Source distribution.

在這一點上,我完全迷失了,真的需要一些幫助。

好的,所以部分解決了這個問題。

https://dba.stackexchange.com/users/993/ypercube的建議下,我閱讀了與mysql_update相關的頁面並遵循了那裡的建議。

升級 MySQL 不會升級 information_schema,所以有些東西不起作用。此命令有助於解決其中一些問題。

現在,我可以添加新使用者,並且 #2006 - MySQL server has gone away 錯誤不再是問題。

但是,例如,嘗試在 Joomla 中安裝擴展時,我仍然會收到 #1062 錯誤。仍在探索解決方案。解決後將使用詳細資訊更新此答案。

好像有人在u5z87_extensions的主鍵中手動插入了數據,而這個主鍵是自增的,這說明你有麻煩了。但我認為您可以使用以下方法解決該問題:

create table u5z87_extension_back like u5z87_extensions;

insert into u5z87_extension_back(all columns excluding the primary key) 
select (all columns excluding the primary key) from u5z87_extensions;

delete from u5z87_extensions;

insert into u5z87_extensions(all columns excluding the primary key)  select * from u5z87_extension_back(all columns excluding the primary key) ; 

除非該表被某個外鍵引用,否則這將起作用。請記住在執行此操作之前手動備份表 u5z87_extensions。

好幸運!

引用自:https://dba.stackexchange.com/questions/43129