2016-10-28 8 views
0

나는 우분투에서 실행되는 MySQL 데이터베이스를 가지고 있습니다. 내가 전화 할 때 예를 들어, show tables; 나는 그러나MySQL - 기존 테이블을 쿼리 할 수 ​​없습니다.

+-----------------------------------+ 
| Tables_in_[schema]    | 
+-----------------------------------+ 
| tabHelloWorld      | 
| tabUserAccounts     | 
| tabHistory      | 
+-----------------------------------+ 

같은 출력을 얻을, 내가 예를 들어, 테이블, SELECT COUNT(*) FROM tabHistory를 조회하기 위해 노력하고있어 때, 나는 오류를

ERROR 1146 (42S02): Table 'schema.tabhistory' doesn't exist 

참고 테이블 이름을 가져 모두 소문자로 SELECT COUNT(*) FROM tabhistory 쿼리는 같은 오류를 반환합니다.

변수가 lower_case_table_names 인 것으로 가정합니다. 현재 1로 설정되어 있습니다. 여기서 MySQL은 테이블 이름의 대소 문자를 고려하지 않는다고 가정합니다. lower_case_table_names = 0을 설정하면 FROM tabHistory이라는 쿼리가 작동합니다. 문제는 MySQL 서버가 다른 데이터베이스를 실행하고 있다는 것입니다.

지금 내 테이블에 어떻게 액세스 할 수 있습니까?

+0

http://stackoverflow.com/questions/4260546/mysql-table-does-not-exist-error-but-it-does-exist 또는 http://stackoverflow.com/questions/4260546/mysql-table -does-not-exist-error-but-does-does-exist –

+1

'lower_case_table_names = 1'을 사용하면 테이블 이름에 대문자를 넣으면 안됩니다. 이러한 테이블의 이름을 바꿔야합니다. – Barmar

답변

1

에서와 같이 사용하여 따옴표 도움이 될 수 있습니다. 이것은 지원되는 구성이 아닙니다. lower_case_table_names=1 일 때, 시스템은 테이블 이름이 생성 될 때 자동으로 테이블 이름을 소문자로 변환하지만 이전 테이블로 되돌아 가지 않습니다. manual는 말한다 : 당신이 유닉스에 1lower_case_table_names 시스템 변수를 설정하려는 경우, 먼저 mysqld을 중지하고 새 변수 설정과를 다시 시작하기 전에 소문자로 이전 데이터베이스와 테이블 이름을 변환해야합니다

. 다음,이 테이블의 이름을 변경, 난 당신이 지금 할 필요가 있다고 생각 무엇

RENAME TABLE T1 TO t1; 

일시적으로 다시 0로 설정되어 mysqld를 다시 시작 : 개별 테이블에 대해이 작업을 수행하려면 RENAME TABLE를 사용합니다.

0

테이블 이름에 따옴표를 사용해 보셨습니까? 나는 특히 모르겠지만 그것은 확실히 당신이이 테이블을 만든 후 lower_case_table_names의 설정을 변경처럼 소리 PostgreSQL을

SELECT COUNT(*) FROM 'tabHistory'; 
+0

MySQL은 백틱을 사용하여 테이블과 컬럼 이름을 인용합니다. – Barmar

+0

안타깝게도 작동하지 않았습니다. – Christian

+0

@barmar에 따라 backticks를 시도해보십시오. – Pragun