在一個項目的使用過程中,資料庫的設計使用了視圖;在産品上線的過程中,發現同僚恢複的資料庫出現了問題,測試人員發現試圖中沒有資料,而視圖基于的表是有資料的,開始以為是關聯的字段沒有相關比對出現空資料。後來随着測試的進行,發現以前通過的測試用例不能通過,開發人員說根本就沒改過代碼;個人覺得問題應該出現在資料庫這塊,把建立試圖的sql語句的select部分通過mysql的用戶端執行下,發現有不少資料;然後用show create view 'my view name',系統提示錯誤,用show tables發現該視圖确實存在,用show create table 'my view name',螢幕上出現了‘create table ...’的字樣,這個時候基本上知道了是恢複資料庫的時候資料庫結構發生了變化;找到備份後的資料庫檔案看了下,果然把view當成table備份了;經過一番查資料和動手操作,總結了以下步驟,希望能幫助大家(環境是linux+mysql):
1、在需要備份的資料庫伺服器上用指令 mysqldump -u root -p --skip-opt --skip-comments --complete-insert 'your db name' > 'your file name';這個指令會把你的資料庫結構和相關資料都導出來,如果你隻要資料庫結構,可以用以下指令:mysqldump -u root -p -d --skip-opt --skip-comments --complete-insert 'your db name' > 'your file name';
2、把備份後的檔案通過scp等安全傳送工具傳送到相關的資料庫伺服器上,我一般使用winscp;
3、在服務上用 mysql -u 'db user name' -p 進入伺服器;
4、create database 'your db name' character set utf8;
5、set names utf8;
6、source 'your file name';
7、系統會提示成功;
這個時候用select * from 'your view name';發現資料顯示出來了。
posted on 2010-07-10 16:25 flyonok 閱讀(8839) 評論(0) 編輯 收藏 引用 所屬分類: mysql