2014-02-05 32 views
5

我們一直在使用phpmyadmin 4導出數據庫。 數據庫包含一些視圖,並且在通常的CREATE VIEW命令 之前有一個CREATE TABLE命令,其中有一個註釋「View viewName的替代結構」。用於查看的MySQL Stand-in結構。它是什麼?

爲什麼使用這種獨立結構?

注意:除非刪除了替身結構,否則從導出的文件導入失敗。

回答

5

「替身」或「替換」結構是從視圖創建的表,該視圖與視圖具有相同的結構。 它用於確保在導出多個相互依賴的視圖時滿足依賴關係。

我不知道爲什麼,如果替身結構存在(有這些的含義實際上是反向)的出口應該會失敗,但也有可能是在這個過程中的錯誤。我必須看到導出文件的相關部分才能真正說明。

phpMyAdmin的sourceforge的網站中提及的bug#3846(http://sourceforge.net/p/phpmyadmin/bugs/3846/)使用替身結構:

導出時,phpMyAdmin的創建視圖替身結構(與CREATE TABLE),然後稍後它將刪除此表並使用CREATE VIEW。

並且在在github爲phpmyadmin的錯誤#11711的評論(https://github.com/phpmyadmin/phpmyadmin/commit/2f2b505)的另一參考:

視圖A可能依賴於下文所定義的另一視圖B,所以視圖甲建立將如果我們不使用stand-in,則會失敗。依賴關係可能更復雜,所以不是計算所有依賴關係,而是使用stand-ins。

+1

它通常無法在視圖無效時創建備用表(例如,引用不相關的表),但可悲的是,它創建的SQL如下所示:CREATE TABLE widgets_summary();圓括號中沒有列出列。 –

+0

@SamWilson - 有趣的一點,感謝您的貢獻! – Raad

+0

鏈接已經死亡。 – PhoneixS