mysql - #1064 - 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册

标签 mysql sql sybase mysql-error-1064 powerdesigner

我正在使用 Sybase Power Designer 从物理数据模型创建数据库(Sybase 创建 SQL 文件)。当我使用 phpMyAdmin 导入 SQL 文件时出现以下错误:

#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;

最佳答案

您收到的错误来自 MySQL。无论用于生成 SQL 的工具如何,数据库似乎都是 MySQL(或者如果您的系统混淆并认为它们是 MySQL,则您的系统出现了严重错误)。

MySQL if 语句(记录在 here 中)必须在存储程序中。这意味着此代码仅在存储过程、用户定义函数或触发器内部编译。它不会“单独工作”。

此外,MySQL 没有sys 表。它使用 information_schema 表。我最强烈的建议是使用适合您实际数据库的工具。如果你是使用工具生成Sybase,那么使用Sybase作为目标数据库。如果你正在使用 MySQL,那么使用一个工具来生成 MySQL 代码。或者,更好的是,学习如何自己编写命令。

最后,如果您打算使用 Sybase,则连接到正确的数据库,您的问题应该得到解决。

关于mysql - #1064 - 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24324636/

相关文章:

jdbc - Sybase token 数据流长度不正确

sql - Sybase ASE 按级别等效连接

MySQL - 在单个查询中更新列的顺序

php - 使用 PHP 在 MySQL 数据库中存储多个复选框数据

mysql - Doctrine 查询在结果中返回额外字段

mysql - 表成表行

mysql - SQL UPDATE 和 IF 语句

Mysql 使用 JOIN 获取过去六周的数据

sql - 选择...在哪里与加入

hibernate - Sybase DBMS 使用哪个连接 JAR?