MySQL 錯誤 2006 MySQL 伺服器在 Max OS X 10.8.3 上使用 homebrew 升級到 5.6.10 後消失了
我使用自製軟體升級了我在 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。
好幸運!