2016-07-20 85 views
0

모든 종류의 데이터베이스에있을 수있는 테이블에서 쉬운 검색을 시도하고 있습니다. 다음 쿼리는 대부분의 데이터베이스에서 작동하지만 mysql에서 작동하는 솔루션을 찾을 수 없습니다. 내 데이터베이스의 테이블은 활성 개체 프레임 워크에서 생성되므로 해당 인스턴스의 이름이나 구성을 변경할 수 없습니다. 여기 postgres 및 mysql에서 일반적인 대문자 검색이 작동하지 않습니다.

모든 데이터베이스하지만 MySQL을 잘 작동 쿼리입니다 :

선택 * "공유" "AO_69D057_FILTER"= 사실과 "CONTAINS_PROJECT"= 사실과 UPPER 같은 UPPER ("FILTER_NAME"() '에서 % pr % ').

MySql은 어떤 이유로 든 큰 따옴표로 테이블 이름을 사용할 수 없습니다. 따옴표 붙지 않은 테이블 이름을 사용하면 MySQL에서는 작동하지만 Postgres에서는 작동하지 않습니다. Postgres는 따옴표로 묶지 않으므로 테이블 이름을 소문자로 변환 중입니다. AO는 테이블 이름을 대문자로 생성합니다.

또한 별칭을 사용해 보았지만 명령문의 평가 계층으로 인해 작동하지 않습니다.

어떤 제안을 테이블 이름 문제를 제거하는 방법?

+0

가능한 중복 http://stackoverflow.com/questions/13884854/mysql -double-quoted-table-names) –

답변

0

기본적으로 큰 따옴표는 열에 사용됩니다. 당신은 그것을 변경할 수 있습니다 여기에

SET SQL_MODE=ANSI_QUOTES;

그것에 대해 문서입니다 : http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

[MySQL은 이중 인용 테이블 이름] (의
+0

감사합니다 Diogo,하지만 내 응용 프로그램이 내가 모르는 고객이 설치 한 인스턴스에서 실행 중일 때 아무 것도 변경할 수 없습니다. –

+0

http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html에서 : "각 응용 프로그램은 세션 모드를 자체 요구 사항으로 설정할 수 있습니다." – NovaDenizen

+0

우선 Diogo 힌트를 보내 주셔서 감사합니다. ER 매퍼로 ActiveObjects를 사용하기 때문에 세션과 db 연결에 대한 액세스 권한이 없습니다. 이 상황을 재정의하기 위해 해킹을 사용했습니다. 쿼리를 실행하기 전에 매퍼의 DB 연결 설정을 얻고 있습니다. 그것을 할 때 어떤 Phisical DB가 밑에 사용되는지 알려주는 ConnectionInfo Object를 요청할 수 있습니다. MySQL 인 경우 귀하의 의견에 명시된 속성을 설정합니다. 이것은 다소 더럽지 만 작동합니다. 내가 ER 매퍼 사이트에서 해결하기 위해 AO에 대한 버그를 제기 : https://ecosystem.atlassian.net/browse/AO-3371 –