我可以從數據文件中找出 MySQL 的版本嗎?
我這裡發生了一個非常奇怪的情況。我有一個執行 ubuntu 8.10 和 MySQL 伺服器的 linux 機器,上面安裝了 Wordpress,為我們公司託管了一個內部部落格。執行它的機器已經壞掉了,但我能夠將驅動器放入一個機箱中並獲得對文件的訪問權限並恢復 MySQL 數據文件夾。我們主要是一家 Windows 公司,我的 linux 經驗非常有限。在這台機器崩潰之前,我們正在嘗試將這個部落格移至執行 PHP for IIS 的 Windows 虛擬機;我們在 MySQL 5.1 上啟動並執行了 Wordpress 數據庫的舊副本。我目前正在嘗試從 linux MySQL 數據文件夾中檢索最新數據並將其導入目前數據庫,但我遇到了問題。
到目前為止的問題:1)我不知道 linux 機器上安裝了哪個版本的 MySQL 2)我在 linux MySQL 數據文件夾上看到了 ib_logfile0、ib_logfile1 和 ibdata1,但不確定它是否真正執行 InnoDB我在 wordpress 文件夾中也有 .frm、.myd 和 .myi 文件
如果我能弄清楚 linux box MySQL 的版本,我或許可以創建一個虛擬機來執行 linux 和 MySQL,這樣我就可以複製數據文件夾,然後進行導出轉儲;除非其他人知道將數據導入我目前數據庫的更簡單方法。
對此問題的任何幫助或指導將不勝感激。
謝謝,內森
我能想到的最乾淨的方法是只檢查一張表:
mysql.user
如果您完全可以登錄到 mysql,請執行以下查詢:
SELECT COUNT(1) column_count FROM information_schema.columns WHERE table_schema='mysql' AND table_name='user';
以下是您應該得到的答案:
- 如果你得到 43,MySQL 5.6
- 如果你得到 42,MySQL 5.5
- 如果你得到 39,MySQL 5.1
- 如果你得到 37,MySQL 5.0
如果不能登錄mysql,複製表
user.frm
user.MYD
user.MYI
到另一台執行mysql的機器。
在另一台機器上執行
CREATE DATABASE junk;
轉到其他 mysql 伺服器中的數據目錄
將目錄更改為垃圾
將使用者表的三個文件複製到其中。如果對方機器是Linux機器,記得執行
chown mysql:mysql user.*
在另一台機器上登錄 MySQL 並執行
DESC junk.user;
它會告訴我之前提到的相同數字。
但是,如果你得到 28,那就是 MySQL 4.1。如果你得到 17,那就是 MySQL 4.0。玩得開心。
試一試 !!!
除了一個例外,MySQL 的數據庫文件在主機之間是二進制兼容的,甚至在 Linux 和 Windows 之間也是如此,因此您可以將它們複製過來。如果您碰巧有浮點數據(聲明
double
或float
)並嘗試在具有不同浮點表示的電腦之間導出,則會出現異常。如果您不確定(或不知道我在說什麼),請嘗試一下。一個額外的小步驟是在 Windows 中將數據庫和表名僅轉換為小寫,但您可以通過將以下內容添加到配置文件(
my.cnf
或my.ini
)中來做到這一點:[mysqld] lower_case_table_names=1
您可能希望檢查您的數據是否被嚴重損壞。請參閱手冊以獲取幫助。