programing

대/소문자를 구분하는 테이블 이름을 강제로 지정하는 방법은 무엇입니까?

fastcode 2023. 8. 8. 23:50
반응형

대/소문자를 구분하는 테이블 이름을 강제로 지정하는 방법은 무엇입니까?

윈도우에서 MySQL 데이터베이스 작업을 하고 있습니다.

리눅스 환경으로 옮겨야 합니다.MySQL 데이터베이스에는 대소문자를 구분하는 테이블과 저장 프로시저가 많이 포함되어 있습니다.

데이터베이스를 백업할 때는 모든 테이블 이름이 소문자로 되어 있으므로 Linux에서 복원할 때는 테이블 복제 및 저장 프로시저를 만들 수 없다고 불평합니다.

Linux 환경에서 MySQL 구성에 액세스할 수 없으므로 MySQL 설정을 대소문자를 구분하지 않는 모드로 변경할 수 없습니다.

MySQL(v5.x)이 창에서 대소문자를 구분하는 테이블 이름을 사용하도록 강제하는 방법이 있습니까?

MySQL 공식 문서의 다음 장을 읽습니다.식별자 대/소문자 구분

그런 다음 서버 섹션에 다음 시스템 변수를 추가합니다.[mysqld]내부에my.ini구성 파일 및 MySQL 서비스를 다시 시작합니다.

lower_case_table_names=2

이 기사를 보십시오 - http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html

모드 2에서는 지정된 대소문자가 포함된 테이블을 저장할 수 있지만, 이름 비교는 대소문자를 구분하지 않으므로 저장할 수 없습니다.table1그리고.Table1동시에

Windows put에서lower_case_table_names=2말에
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini파일.

안타깝게도 Linux처럼 100% 작동하도록 Windows의 MySQL을 만들 수 있는 방법은 없습니다.TurnKey - MySQL Appliance를 사용하여 Virtual Box 또는 VMware 플레이어에서 최소한의 VM을 실행할 수 있습니다.

개인적인 경험으로 볼 때, 문제를 진단하기 위해 구축 환경과 유사한 구성을 가진 VM을 보유하는 것이 매우 유용하다는 것을 알게 되었습니다.

이 속성을 lower_case_table_names=2에 my.ini에 추가합니다.

기본적으로 테이블 이름은 Windows에서 대소문자를 구분하지만 lower_case_table_names 변수를 2로 업데이트하여 대소문자를 구분할 수 있습니다.

참조: https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html

그러나 추가 프로세스로 이동하기 전에 기존 데이터베이스의 백업을 작성합니다.그런 다음 테이블 이름의 불일치를 방지하기 위해 기존의 모든 데이터베이스를 제거해야 합니다.

lower_case_table_names를 2로 설정하는 단계에 있었지만 이 변수는 읽기 전용이므로 스크립트를 사용하여 업데이트할 수 없습니다.따라서 구성 파일(my.ini)로 변경해야 합니다.창의 경우 C:\ProgramData\My에서 사용할 수 있습니다.SQL\MySQL Server X.X 디렉터리입니다.관리자 모드에서 이 파일을 열고 lower_case_table_names 변수 값을 2로 설정합니다.

이러한 변경사항은 다음 단계에 따라 MySQL 서버를 재시작하기 전에 MySQL 서버를 재시작해야 적용됩니다.

  • Windows+R 키보드를 사용하여 실행 창 열기
  • services.msc를 입력하고 Enter 키를 누릅니다.
  • MySQL 서비스를 선택하고 재시작 버튼을 클릭합니다.

참조: https://www.mysqltutorial.org/mysql-adminsitration/restart-mysql/

my.ini 파일이 변경되어 MySQL 서버가 시작되지 않을 수 있습니다.그렇다면 우리는 더 이상 진행할 수 없습니다.따라서 lower_case_table_names 변수 값은 다시 1로 설정됩니다.그런 다음 위에 언급된 MySQL 서버를 다시 시작합니다.

마지막으로 창에서 MySQL에 대한 테이블 이름을 대소문자를 구분하여 컴퓨터에서 MySQL을 완전히 제거하고 설치하는 동안 구성할 수 있는 옵션은 하나뿐입니다.설치하는 동안 유형 및 네트워킹 탭에서 고급 및 로깅 옵션을 선택한 다음 라디오 버튼을 선택하여 고급 옵션 탭에서 해당 대소문자를 보존합니다.

ref: Windows 10의 MySQL 8.x에서 lower_case_table_names를 설정할 수 없습니다.

나는 이 라인을 추가하고 그것은 다른 사례 문제를 해결합니다.

lower_case_table_names=1

/etc/my.cnf에서

페이지에서 mysql 변수 "lower_case_table_names"를 설정하는 방법을 볼 수 있습니다. https://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_lower_case_table_names

MySQL 8에서는 설치가 완료되면 lower_case_table_names 설정이 허용되지 않습니다.설정을 사용하려면 mysql을 다시 설치해야 합니다.

2023

- 오픈 1개 - 접이식my.ini이 은 다음 위치에 .C:\xampp\mysql\bin\

- 2 - 언더[mysqld]더하다lower_case_table_names=2

enter image description here

3 - 서버를 다시 시작합니다.

이름을 바꾸거나 새 데이터베이스/테이블을 만들 때:

enter image description here

언급URL : https://stackoverflow.com/questions/6248735/how-to-force-case-sensitive-table-names

반응형