2011-02-08 4 views
3

이 SQL을 사용하여 테이블의 이름을 바꾸려고합니다. Windows XP에서 MySQL 5.1.41을 사용하고 있습니다.mysql 테이블의 이름을 바꿀 수 없습니다

USE 'bobby_tables'; 

    ALTER TABLE gc_acompte_fournisseur 
     RENAME TO GC_Acompte_Fournisseur; 

쿼리가 올바르게 실행되었다고 주장하지만 거짓말입니다. 내 테이블 이름은 여전히 ​​모두 소문자입니다!

내 테이블을 대문자로 만들지 못하도록 막 다른 파울 레어 러너가 실행 한 것은 무엇입니까?

+3

"오, 그래, 리틀 바비 테이블, 우리는 그를 부른다." http://xkcd.com/327/ – JasonWoof

답변

4
이 얼마나 MySQL이 윈도우에서 작동

:

http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_lower_case_table_names

  • lower_case_table_names
  • 0으로 설정하면

, 테이블 이름 비교는 대소 문자를 있습니다 지정 로 저장됩니다 . 1로 설정하면 테이블 이름 은 디스크의 소문자로 저장되고 비교는 대/소문자를 구분하지 않습니다. 이 2로 설정된 경우 테이블 이름은 으로 저장되지만 소문자로 비교됩니다. 이 옵션은 데이터베이스 이름 및 테이블 별칭에도 적용됩니다. 에 대한 자세한 내용은 Section 8.2.2, “Identifier Case Sensitivity”을 참조하십시오. 당신이 (예 : Windows 또는 Mac OS X 등) 대소 문자를 구분 파일 이름을 가진 시스템 에서 MySQL을 실행하는 경우

은 0이 변수를 설정하지 않아야합니다. 시스템에서이 변수를 0으로 설정하고 다른 문자를 사용하여 MyISAM 테이블 이름 에 액세스하면 인덱스가 손상 될 수 있습니다. Windows의 경우 기본값은 1입니다. 당신이 InnoDB의 테이블을 사용하는 경우 맥 OS X에서 기본값은 2

을, 당신은 이를 소문자로 변환 할 이름을 강제로 모든 플랫폼에서 1이 변수를 설정해야합니다.

(강조 광산)

+0

sooooo ....이 값을 2로 변경해야합니까? – Matt

+0

아니요, 1로 유지해야하며 테이블이 어떤 경우인지 신경 쓰지 마십시오. 이것은 이것을 다루는 가장 안전한 방법입니다. – Mchl

+0

하지만 리눅스 서버는 대소 문자가 혼합 된 테이블을 가지고 있는데, 필자가 비교 도구 톤을 오 탐지하고 캡틴이 서버에서 소문자로 만들고 싶지 않습니다. ( – Matt

1

가/이름 변경 쿼리 다음 실행 MySQL의에서 테이블 이름을 변경하려면 : RENAME TABLE studentpu_students

에게 :

이름 바꾸기 TABLE tbl_name에이

예 new_tbl_name TO를

참조 용 : http://dev.mysql.com/doc/refman/5.0/en/rename-table.html

고맙습니다!