programing

Maria에서 lower_case_table_names 변수 변경DB

nicescript 2023. 1. 13. 20:03
반응형

Maria에서 lower_case_table_names 변수 변경DB

테스트용 데이터베이스를 실행하는 Linux 서버가 있지만 로컬에서 윈도우 작업을 하고 있습니다.이 말은 즉,lower_case_table_names변수는 로 설정됩니다.1그래서 기본적으로 내 테이블 이름은 대소문자를 구분합니다.0를 디폴트로 설정합니다.

변수 변경을 시도했습니다.my.ini인스톨 디렉토리에 있습니다).C:\Program Files\MariaDB 10.0\data\my.ini이 변경을 적용하기 전에 서비스를 재시작해야 합니다.

난 내 일을 했고, 그 일을 멈추었다.MySql서비스.그러나 다시 시작하려고 하면 다음과 같은 오류가 발생합니다.

1067: 프로세스가 예기치 않게 종료되었습니다.

그래서 마리아DB는 이해 못 할 것 같아요my.ini배열.

설명서를 읽고 이해한 바와 같이, 이것은 실제로 이것을 하는 방법 중 하나입니다.의 삭제lower_case_table_names에서 변수my.ini파일, 서비스를 다시 시작할 수 있습니다.

테이블 이름이 대소문자를 구분하도록 변수를 설정하려면 어떻게 해야 합니까?

편집

해당 변수를 다음 중 하나로 설정1또는2서비스가 다시 정상적으로 시작될 수 있습니다.

매뉴얼:

MySQL 5.5.46에서 대소문자를 구분하지 않는 파일 시스템에서 --lower_case_table_names=0으로 서버를 시작하려고 하면 오류 메시지가 인쇄되고 서버가 종료됩니다.

MariaDB에도 동일하게 적용됩니다.

lower_case_file_system이 ON 또는 1인 시스템에서 lower_case_table_names를 OFF 또는 0으로 설정하면 오류 메시지가 나타날 수 있습니다.이 질문자는 윈도우즈 시스템에서 개발되지만 대소문자를 구분하는 Linux 시스템에 배포됩니다. 또한 개발 중에는 작동하지만 배포에서는 작동하지 않는 호환성 문제가 발생할 수 있습니다.

일반적인 통념과는 달리 Windows(> NT)에서는 대소문자를 구분하는 파일 시스템을 사용할 수 있으며 NTFS에서는 처음부터 대소문자를 구분하는 파일을 지원하며 폴더 단위로 설정할 수도 있습니다(필요).깔끔합니다. mariadb의 데이터 파일(예: mariadb\data)의 위치와 내용을 대소문자를 구분하는 동작으로 설정하면 my.ini의 [mysqld]에서 lower_case_table_name 값을 0으로 설정할 수 있습니다.

lower_case_table_names = 0

여기 저의 결과가 있습니다.

select @@lower_case_file_system, @@lower_case_table_names;

Windows 10 시스템(wampserver 실행, mariadb 10.4.10:

+--------------------------+--------------------------+
| @@lower_case_file_system | @@lower_case_table_names |
+--------------------------+--------------------------+
|                        0 |                        0 |
+--------------------------+--------------------------+
1 row in set (0.000 sec)

완벽하네요.

그렇다면 데이터 폴더를 대소문자를 구분하도록 설정하는 방법은 남아 있습니까?fsutil은 파일이 생성된 후 폴더에 대소문자를 구분하는 플래그를 설정할 수 있습니다.명령어는 다음과 같습니다.

fsutil file setcasesensitiveinfo *data* enable

여기서 data는 폴더 이름을 사용합니다.한 가지 원인이 있습니다.이 명령어는 모든 서브폴더를 동시에 재귀적으로 설정하는 것을 지원하지 않습니다.심플한 PS 스크립트는 다음과 같은 이점을 제공합니다.

Get-ChildItem -Path C:\wamp64\bin\mariadb\mariadb10.4.10\data -Directory -Recurse | foreach {fsutil file SetCaseSensitiveInfo $_.Fullname}

당연히 내 데이터 폴더가 아닌 데이터 폴더에 대한 경로를 변경해야 합니다.

비고: MySQL Workbench의 많은 버그 중 하나는 Windows에서 lower_case_file_system=1로 잘못 간주되어 서버 구성 문제에 대해 불만을 제기한다는 것입니다.

경고 하나 하죠OS와 FS Suport의 케이스는 훌륭하지만, 많은 어플리케이션이 그것을 이해하지 못하고 있습니다.그러나 MySQL 또는 MariaDB 데이터 폴더를 다른 애플리케이션과 혼동해서는 안 됩니다.

문제가 생기면 알려주세요.

언급URL : https://stackoverflow.com/questions/48704227/changing-lower-case-table-names-variable-in-mariadb

반응형