Neo's Blog

首頁 相本 討論 書籤

分類目錄
本站日誌 (51)
碎碎唸啦 (173)
網站架設 (84)
程式設計 (161)
軟體使用 (69)
電子商務 (126)
經營奇想 (48)
基金理財 (11)
聰明消費 (87)
電影心得 (47)
開放原碼 (16)
工作記錄 (2)
毛毛小記 (9)
就是不同 (2)




歷史資料
 




June 24, 2007
[MySQL] View 的匯出

昨天想從 MySQL 的 A 資料庫匯出 View 到 B 資料庫,在 B 資料庫匯入 SQL 時一直出現 Table 'xxx' already exists ,但是怎麼檢查 B 資料庫都沒有 xxx 這個表單。

原來是匯出的 View SQL 裡面加上了 table name。

就像這樣:

CREATE ALGORITHM = UNDEFINED DEFINER = `xyz`@`localhost` SQL SECURITY DEFINER VIEW `A`.`xxx` AS ....

而且整串 View 的 SQL 語法都加上了 table name,這是因為有時候會有跨資料庫 View 的關係 MySQL 只好這樣處理。如果沒有跨資料庫 View 的話,拿到這樣的檔案只好先手動改 SQL,或許 MySQL 有選項可以控制不要這樣輸出吧。

另外這是題外話..有時 View 跟 View 之間會有交互參照的關係,如果匯出的順序不對,找不到參照的 View 一樣會出現 Table 'yyy' doesn't exist。在過去這個問題過去困擾我很久,每次遇到這種狀況只好人工把 View 的 SQL 順序排一次。但現在匯出的 SQL 會在建立 View 前會用 CREATE TABLE 的方式把 View 建起來,等要建立 View 的時候再 DROP TABLE,這樣就可以解決 View 匯出時的交互參照問題了。

 
由 Neo 發表於 June 24, 2007 11:23 AM 收進你的MyShare個人書籤  

感謝前輩經驗分享 學到一招


VAWLOG 發表於 June 24, 2007 11:38 PM

請問你是不是要說明,匯出的語法包含了 "資料庫" 的名字了呀? 因為在B資料庫執行Create View A.view1. 系統當然會說資料庫A已經有view1了.

另外雖然說View跟Table很像,不過MySQL應該是認為兩種東西吧? Create Table 與 Create View 應該不是一樣的語法吧?

MySQL跟我不太熟拉~只是細心研讀LAMP前輩的文章所提出的疑問..


刮牛人 發表於 June 25, 2007 12:59 AM

http://www.strongd.net/blog/show/159

看起來 View 很類似一種巨集, 但是卻沒有 index, primary key, 動作是 full table scan

似乎看不出它有什麼價值??


jsj 發表於 October 13, 2007 04:24 PM
發表迴響  
(*星號開頭為必填欄位)











(請輸入您看到的數字,看不到請按右鍵->顯示圖片)


記住我的資訊?







Copyright 2005 Neo's Blog All rights reserved.