#mysql #database
#mysql #База данных
Вопрос:
У меня есть база данных mysql на сервере mac osx, и я перенес базу данных на сервер Linux, используя mysqldump.
Теперь я вижу, что запросы на сервере Linux не возвращают никаких значений (которые отлично работают на mac os x).
Прочитав руководство, я обнаружил, что такое поведение как-то связано с системной переменной сервера ‘lower_case_table_names’.
У меня оно установлено как 2 на mac osx и 0 на сервере Linux (значения по умолчанию).
В документации предлагается сохранить значение как 1 на случай, если серверными средами являются Windows и Linux. (У меня комбинация mac osx / linux)
Кто-нибудь выполнял миграцию такого типа? Если да, не могли бы вы, пожалуйста, дать мне несколько указаний относительно того, как я должен это делать.
С наилучшими пожеланиями
Комментарии:
1. простой способ — избавиться от заглавных букв в именах таблиц и запросах, в остальном делать то, что написано, и менять на 1 (где регистр не имеет значения)
2. Спасибо, Эйб, теперь у меня все работает. Это были шаги, которые я предпринял, чтобы заставить ее работать. На сервере mac: mysqldump mydb > mydbDump.sql На сервере Linux: mysql> создать базу данных mydb; отредактируйте /etc/my.cnf и добавьте строку set-variable=lower_case_table_names=1 /etc/init.d/mysqld restart /usr/local/mysql -u root -pmyPassword myDb < mydbDump.sql Это позволило убедиться, что mysql сохраняет все имена таблиц в нижнем регистре при выполнении команды create table . Я мог бы запустить небольшой sql для переименования таблиц, я просто хотел, чтобы mysql сделал это сам