我正在使用Sybase Power Designer从物理数据模型创建数据库(Sybase创建SQL文件)。当我导入SQL文件与phpMyAdmin我有以下错误:
#1064 -你有一个错误的SQL语法;查看对应MySQL服务器版本的手册,以获得在'if exists(select 1 from sys.) '附近使用的正确语法。sysforeignkey where role='FK_ARTWORK_CREATES_ARTIST'在第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;
你得到的错误是来自MySQL。不管用来生成SQL的工具是什么,数据库似乎是MySQL(或者如果你的系统混淆并认为它们是MySQL,那么你的系统就出了严重的问题)。
MySQL if
语句(这里有文档)必须在存储程序中。这意味着该代码只能在存储过程、用户定义函数或触发器中编译。它不会自己"自动工作"。
另外,MySQL没有sys
表。它使用information_schema
表。我最强烈的建议是使用适合您实际数据库的工具。如果使用工具生成Sybase,则使用Sybase作为目标数据库。如果你正在使用MySQL,那么使用一个工具来生成MySQL代码。或者,更好的是,学习如何自己编写命令。
最后,如果您打算使用Sybase,那么连接到正确的数据库,您的问题应该可以解决。
由于我不能在这里发布,sqlfiddle.com暂时不可用,我决定在PasteBin上发布Sybase语法正确的代码