Как решить Не удается подключиться к MySQL серверу на 'localhost' (10061) при установке lower_case_table_names = 0? - PullRequest
3 голосов
/ 23 апреля 2020

При создании таблиц в mysql я заметил, что все имена моих таблиц начинаются со строчных букв, даже когда я называл их прописными.

Я обнаружил, что входя в:

C: \ ProgramData \ MySQL \ MySQL Сервер 8.0

Открытие файла my.ini и изменив lower_case_table_names=0

в соответствии с этого видео .

После выполнения вышесказанного я выключил сервер, перезапустил компьютер и при попытке снова запустить сервер у меня появляется следующая ошибка:

Не удалось подключиться, возможно, сервер не работает , Невозможно подключиться к MySQL серверу на 'localhost' (10061)

Когда я вернусь обратно lower_case_table_names=1

Это снова работает. Как мне решить эту проблему?

РЕДАКТИРОВАТЬ:

Вместо того, чтобы войти в INI-файл, который я нашел, я могу изменить свойство через

Файл опций

Затем на вкладке «Общие» я нашел lower_case_table_names и изменил его на 0

Но опять же та же ошибка.

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Как вы можете прочитать здесь https://bugs.mysql.com/bug.php?id=89035

Начиная с 8.0.5

Запрещено запускать сервер с параметром lower_case_table_names, который отличается от настройки, используемой при инициализации сервера. Ограничение необходимо, потому что параметры сортировки, используемые различными полями таблицы словаря данных, основаны на настройке, определенной при инициализации сервера, и перезапуск сервера с другой настройкой привел бы к несоответствиям в отношении порядка и сравнения идентификаторов.

Это запрещено и приводит к тому, что служба не запускается.

1 голос
/ 26 апреля 2020

Я бы посоветовал вам использовать значение 2 для этой конфигурации, так как вы пытаетесь использовать 0 на windows компьютере, это может вызвать проблему в таблицах вашей базы данных, основанную на документации для windows / Ma c Использование ОС для значения 0:

Имена таблиц и баз данных хранятся на диске с использованием буквенного регистра, указанного в операторе CREATE TABLE или CREATE DATABASE. Сравнение имен чувствительно к регистру. Не следует устанавливать для этой переменной значение 0, если вы запускаете MySQL в системе, в которой имена файлов не зависят от регистра (например, Windows или macOS). Если вы зададите для этой переменной значение 0 с параметром --lower-case-table-names = 0 в файловой системе без учета регистра и получите доступ к именам таблиц MyISAM, используя разные регистры букв, это может привести к повреждению индекса .

в связанной документации значение 2 подойдет для вашего случая, оно будет хранить таблицы на диске с теми же именами, которые вы использовали, поиск в этом случае не будет чувствителен к регистру:

Имена таблиц и баз данных хранятся на диске с использованием буквенного регистра, указанного в операторе CREATE TABLE или CREATE DATABASE, но MySQL преобразует их в строчные буквы при поиске. Сравнение имен не чувствительно к регистру. Это работает только на файловых системах, которые не чувствительны к регистру! Имена таблиц InnoDB и имена представлений хранятся в нижнем регистре, как для lower_case_table_names = 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...