連字符的 MySQL 資料庫名稱

連字符的 MySQL 資料庫名稱

我最近將臨時資料庫伺服器從 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 databasenamemysqldump --databases databasename。前者沒有create db在其中添加聲明,後者則添加了聲明。

當您使用前一條語句進行轉儲時,您可以手動建立一個新資料庫並使用類似mysql newdbname < dump.sql.對於後者,您只需打開轉儲檔案並更改名稱即可。

順便說一句,我認為 MySQL 的設計很糟糕,mysqldump有這種差異。如果不帶該--databases語句進行備份,則必須先建立資料庫,然後才能還原。該資料庫可能具有與資料庫原來不同的字元集或排序規則。在我看來,如果轉儲資料庫,它應該包含所有資料和元資料。必須供應--routines和 也是如此--events。我可以想像類似的選項--no-routines可以很方便,但預設情況下不是傾銷慣例?唔。

相關內容