Mysql
MariaDB mysqldump 缺少所有數據 - 我如何強制包含它?
多年來,我一直在使用 mysqldump 沒有太多麻煩。最近我加入了一個使用“MySQL dump 10.14 Distrib 5.5.52-MariaDB, for Linux (x86_64)”的項目,當我嘗試進行轉儲時,它包括所有創建表語句,以及如果我包括的常式——常式,但它不包含任何數據。文件中根本沒有 INSERT 語句。
我在這個 DBMS 實例中嘗試了多個數據庫,並且我嘗試過使用幾個不同的使用者帳戶,包括 root。我檢查了我使用的使用者是否可以訪問數據,如果我從這些使用者名直接登錄到 mysql,我可以瀏覽數據。
我一直無法在網上找到任何幫助資訊,因為所有文章似乎都假設插入數據就在那裡(我認為這是正確的)。有沒有人以前見過這樣的事情,或者有沒有建議我可以嘗試獲得真正的數據庫備份?
我承認這是一個非常舊的 MariaDB 版本,我是團隊的新手,我願意更新它,但直到我知道數據已成功備份到某個地方之後。
提前感謝您的幫助,這真的讓我很困惑。
這是我正在嘗試的:
/usr/bin/mysqldump -u root -p --all-databases > dbbackup-dump-$(date +\%Y-\%m-\%d).sql /usr/bin/mysqldump -u root -p -d databasename > dbbackup-dump-$(date +\%Y-\%m-\%d).sql
答案很簡單。
-d
代表沒有數據!這是MariaDB 文件:
不寫入任何表格行資訊(即不轉儲表格內容)。如果您只想轉儲表的 CREATE TABLE 語句(例如,通過載入轉儲文件來創建表的空副本),這很有用。
只要擺脫了
-d
,你就可以走了。更新 2019-09-24 11:04 EDT
讓我澄清一下為什麼你會看到你所看到的,
- 當您使用
--databases
時,該行USE databasename;
被添加INSERT INTO
到每個命名數據庫的所有語句之前。(請查看MySQL Docs on--databases
)- 當您使用
--all-databases
時,該行USE databasename;
被添加INSERT INTO
到 MySQL 實例中每個給定數據庫的所有 s 之前(請查看MySQL Docs on--all-databases
)- 當您使用 時
-d
,您是在告訴 mysqldump 不要轉儲數據,無論您是否命名數據庫。即使您使用--database
orall-databases
,也不會輸出任何數據。(請查看MySQL 文件--no-data
)