PHP 出現下述錯誤訊息:
PHP Warning: mysql_connect(): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (99)
但是追蹤起來, 程式執行時, 機器、DB 都沒有什麼 Loading, 於是從設定追, 程式大概都跑約 60秒就掛掉, 於是把設定於60秒的都抓出來看, 再測試看看, 也沒有任何差異, 一樣會掛掉.
個人筆記, 記錄關於 系統、程式、新聞 與 日常生活 等資訊
PHP 出現下述錯誤訊息:
PHP Warning: mysql_connect(): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (99)
但是追蹤起來, 程式執行時, 機器、DB 都沒有什麼 Loading, 於是從設定追, 程式大概都跑約 60秒就掛掉, 於是把設定於60秒的都抓出來看, 再測試看看, 也沒有任何差異, 一樣會掛掉.
於 MySQL 內, 資料格式如下:
id name
1 A
1 B
1 C
2 D
想要一行指令: "SELECT * FROM TABLE WHERE id = 1 GROUP BY id", 取得 GROUP BY id 的所有資料集合, 要怎麼做?
註: 想要內容列出 id=1, name=A,B,C
於 Debian squeeze (stable) 安裝 Percona MySQL Server 只要照此篇: 於 Ubuntu、Debian 安裝 MySQL Percona 就可以完成.
但是若是從一開始版本就是用 Wheezy (Testing), Percona 官方支援(Percona Software) 還沒 Support, 就會遇到一些問題.
註: 此篇於 Percona MySQL 出 Wheezy DEB Package 後, 就只要照上面的連結做就可以了, 以下是直接裝 Debian Testing 時, Percona 遇到尚未出版本, 然後有遇到套件相依有問題的狀況, 提供可能的解決方式.
Debian Squeeze 和 Wheezy 在安裝 Percona 會遇到的問題, 最主要是差在 libssl (squeeze: libssl0.9.8, wheezy: libssl1.0.0).
直接使用 APT 安裝, 會遇到下述問題:
percona-server-server : 相依關係: percona-server-server-5.5 但它卻將不會被安裝
E: 無法修正問題,您保留 (hold) 了損毀的套件。
或
percona-server-server-5.5 : 相依關係: libssl0.9.8 (>= 0.9.8m-1) 但它卻無法安裝
E: 無法修正問題,您保留 (hold) 了損毀的套件。
不理 libssl, 直接強迫安裝的話(下載 deb 使用 dpkg --ignore-depends, 或 apt-get -f 強制安裝), 其中相依的套件都裝好後, 啟動 MySQL 會遇到下述問題:
mysql: error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directory
MySQL 使用 MyISAM、InnoDB 需要調整的設定參數、數值都不一樣, 隨著機器的 CPU、RAM 和搭配的 Serivce 都需要另外設定調整.
Percona 是 MySQL 的分支之一, 安裝之後, 操作起來跟一般 MySQL 標準版本, 不會感到有任何差異.
MySQL 想要對文字內容大量取代某個網址, 比較安全的做法是先 mysqldump 所有資料後, 對內容做取代, 然後在整個 Import 回去.
但是有幾個問題:
以上問題, 只要 MySQL dump 的資料可以一筆 Insert, 一行 SQL 語法, 就可以解決此問題.
MySQL 使用 myisamchk 修復 *.MYI 時, 出現下述訊息:
myisamchk: Disk is full writing '/tmp/ST3lJjsW' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to c ontinue after freeing disk space)
myisamchk: Retry in 60 secs. Message reprinted in 600 secs
使用 MySQL 來達到 Fulltext 的效果, MySQL 對於 英文會自己依照空格去斷開, 中文就得要自行斷詞囉~
系統用久了, 自然就會有不連續的碎片(fragmented)產生, 以前 Dos 使用 defrag, Windows 使用磁碟重組, 而 MySQL 則是使用 Optimize table.
以往都是使用: 使用 PHP 對所有 MySQL Database 做 Optimize / Repair 的動作 - 這裡面的那隻程式來跑.
這次突然想到對特定的 Table 手動執行一下, 意外看到下述的訊息:
mysql> OPTIMIZE TABLE foo;
+----------+----------+----------+-------------------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+----------+----------+----------+-------------------------------------------------------------------+
| test.foo | optimize | note | Table does not support optimize, doing recreate + analyze instead |
| test.foo | optimize | status | OK |
+----------+----------+----------+-------------------------------------------------------------------+
雖然結果一樣, 但是還是查查看差別為何~