我最近將臨時資料庫伺服器從 MySQL 5.0.84 升級到 5.1.72。我正在嘗試在升級後恢復 mysqldump。轉儲中的資料庫名稱是gss-app
。但是下面的資料庫資料夾名稱/var/lib/mysql
變成了gss@022dapp
,但是當我使用登入 mysqlmysql -u root -p
並鍵入時show databases;
,它將資料庫名稱列為gss-app
唯一,我可以Use Database gss-app
使用命令列出表show tables
。
恢復因錯誤而失敗Got a packet bigger than --max_allowed_packet size
。當時資料庫已部分恢復,我藉此機會將gss@022dapp
資料夾重新命名為gss-app
並登入 mysql shell。
它將資料庫名稱列為,@mysql@gss-app
但我無法進入該資料庫。現在我再次運行資料庫恢復,--max_allowed_packet_size=1024M
我看到該gss@022dapp
資料夾是在/var/lib/mysql
.
我應該關心 中的資料夾名稱嗎/var/lib/mysql
?或者我可以在恢復時使用不同的資料庫名稱嗎?
答案1
特別是關於您在恢復時使用不同名稱的問題:使用 mysqldump 您可以執行mysqldump databasename
或mysqldump --databases databasename
。前者沒有create db
在其中添加聲明,後者則添加了聲明。
當您使用前一條語句進行轉儲時,您可以手動建立一個新資料庫並使用類似mysql newdbname < dump.sql
.對於後者,您只需打開轉儲檔案並更改名稱即可。
順便說一句,我認為 MySQL 的設計很糟糕,mysqldump
有這種差異。如果不帶該--databases
語句進行備份,則必須先建立資料庫,然後才能還原。該資料庫可能具有與資料庫原來不同的字元集或排序規則。在我看來,如果轉儲資料庫,它應該包含所有資料和元資料。必須供應--routines
和 也是如此--events
。我可以想像類似的選項--no-routines
可以很方便,但預設情況下不是傾銷慣例?唔。