2014-06-20 5 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

오류에 사이베이스에 대한 올바른 구문과 코드를 게시하기로 결정

코드입니다 당신은 MySQL에서 왔습니다. SQL을 생성하는 데 사용되는 도구와 관계없이 데이터베이스는 MySQL (또는 혼란 스럽거나 MySQL이라고 생각하면 시스템에 심각한 오류가있는 것 같습니다.

MySQL if 문 (here에 설명되어 있음)은 저장된 프로그램 내에 있어야합니다. 즉,이 코드는 저장 프로 시저, 사용자 정의 함수 또는 트리거 내부에서만 컴파일됩니다. 그것은 "스스로 일하는"것이 아닙니다. 또한 sys 테이블이 없습니다. information_schema 테이블을 사용합니다. 내 가장 강력한 제안은 실제 데이터베이스에 적합한 도구를 사용하는 것입니다. 도구를 사용하여 Sybase를 생성하는 경우 Sybase를 대상 데이터베이스로 사용하십시오. MySQL을 사용하고 있다면 도구를 사용하여 MySQL 코드를 생성하십시오. 또는 더 나은 방법은 명령을 직접 작성하는 방법을 배우는 것입니다.

마지막으로 Sybase를 사용하려는 경우 올바른 데이터베이스에 연결하면 문제가 해결됩니다.

+0

죄송합니다! 나는 분명하지 않았습니다! 나는 질문을 다시 편집했다 !! 그래도 감사합니다!! 추신 : 그것은 필수 사용 sybase 전원 디자이너입니다. – user3759619

+2

@ user3759619 생성 한 sql을 검토하고 피드에 적용 할 db에 유효한지 확인해야합니다. 아마도 생성 된 출력이 호환되어야하는 SQL의 맛을 말할 수있는 옵션이있을 것입니다. – AD7six

+0

@ user3759619. . . PowerDesigner를 사용해야하는 경우 Sybase를 사용하십시오. –