2014-06-20 60 views
1

我正在使用Sybase Power Designer從物理數據模型創建數據庫(Sybase創建一個SQL文件)。當我用phpMyAdmin導入SQL文件時,我有以下錯誤:#1064 - 你的SQL語法錯誤;檢查與您的MySQL服務器版本對應的手冊

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if exists(select 1 from sys.sysforeignkey where role='FK_ARTWORK_CREATES_ARTIST'' at line 7 .

任何想法?這個錯誤是由於物理模型上的錯誤而出現的,還是存在另一個問題?

這是代碼:

if exists(select 1 from sys.sysforeignkey where role='FK_ARTWORK_HAS_BUY') then 
    alter table artwork 
     delete foreign key FK_ARTWORK_HAS_BUY 
end if; 
+0

您正在使用哪種版本的mySQL和PowerDesigner? – pascal

+0

看起來您的物理數據模型沒有在PowerDesigner中使用MySQL DBMS。對於PowerDesigner,此語法'select 1 from sys.sysforeignkey'只出現在SQL Anywhere(和Sybase IQ)DBMS中。 – pascal

+0

它是16.5(電源設計師),當我在我大學的實驗室嘗試最新的時候,我沒有面臨同樣的問題。 – user3759619

回答

0

正如我不能張貼在這裏,和sqlfiddle.com臨時不可用,我決定在PasteBin

+0

爲什麼你不能在這裏發佈? – AD7six

+0

@ AD7six,類似於「偏執代理阻止HTTP請求中的SQL」問題。 –

1

錯誤後語法正確的代碼爲Sybase你得到的是來自MySQL。無論用於生成SQL的工具如何,數據庫似乎都是MySQL(或者如果您的系統感到困惑並認爲它們是MySQL,那麼您的系統會出現嚴重錯誤)。

MySQL if聲明(記錄爲here)必須在存儲程序中。這意味着此代碼只能在存儲過程,用戶定義的函數或觸發器內進行編譯。它不是「自己工作」的。

另外,MySQL沒有sys表。它使用information_schema表。我最強烈的建議是使用適合您實際數據庫的工具。如果您正在使用工具生成Sybase,則使用Sybase作爲目標數據庫。如果你使用MySQL,那麼使用一個工具來生成MySQL代碼。或者,更好的是,學習如何自己編寫命令。

最後,如果您打算使用Sybase,那麼連接到正確的數據庫並且您的問題應該被修復。

+0

對不起!!我不是那麼清楚!我重新編輯了這個問題!謝謝你! PS:這是強制使用sybase電源設計器。 – user3759619

+2

@ user3759619那麼它是強制性的審查它生成的SQL,並確保它是有效的數據庫你要餵它。可能有一個選項可以說出生成的輸出應與哪種sql風格兼容。 – AD7six

+0

@ user3759619。 。 。如果您必須使用PowerDesigner,那麼使用Sybase。 –

相關問題