2014-06-20 59 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。 –

相关问题