#mysql #ruby-on-rails #ruby
#mysql #ruby-on-rails #ruby
Вопрос:
Я пытаюсь запустить приложение rails на своем компьютере, и у меня возникают проблемы с созданием баз данных. Я правильно установил / настроил rails, mysql и установил mysql 2.8.1 gem (я проверил это с помощью gem list).
Итак, теперь я пытаюсь запустить ‘rake db: create: all’ и получаю следующую ошибку:
Не удалось создать базу данных для {«encoding»=>»utf8», «username»=> «root», «adapter»=> «mysql», «database»=> «pyo», «host»=> «localhost», «password»=> nil, «socket» =>»/tmp/mysql.sock»}, кодировка: utf8, параметры сортировки: utf8_unicode_ci (если вы задаете кодировку вручную, убедитесь, что у вас есть соответствующие параметры сортировки)
Не удалось создать базу данных для {«encoding»=>»utf8», «username»=> «root», «adapter»=> «mysql», «database»=> «pyo_test», «host»=> «localhost», «password»=> nil, «socket» =>»/tmp/mysql.sock»}, кодировка: utf8, параметры сортировки: utf8_unicode_ci (если вы задаете кодировку вручную, убедитесь, что у вас есть соответствующие параметры сортировки)
В настоящее время я использую 5.5.10 MySQL Community Server (GPL) на Snow Leopard (10.6.6)
И вот что находится в моем файле database.yml
development:
adapter: mysql
encoding: utf8
database: pyo
username: root
password:
socket: /tmp/mysql.sock
host: localhost
test:
adapter: mysql
encoding: utf8
database: pyo_test
username: root
password:
socket: /tmp/mysql.sock
host: localhost
Я замечаю, что в конце ошибки написано «кодировка: utf8, параметры сортировки: utf8_unicode_ci (если вы устанавливаете кодировку вручную, убедитесь, что у вас есть соответствующие параметры сортировки)» — это проблема? И если да, то как мне это исправить?
Я застрял на этой штуке в течение нескольких часов и не могу найти ничего, что помогло бы в Google. Поэтому я был бы признателен за любую помощь на этом этапе.
Спасибо!!
Комментарии:
1. вы нашли решение для этой проблемы? с содержательным объяснением?
Ответ №1:
Я знаю, что эта тема старая, но, будучи ИТ-специалистом, который верит в хранение хорошей надежной документации в одном месте, здесь идет:
Проблема на самом деле связана с вашим файлом «config/database.yml». Вы указываете ROR на неправильное расположение сокета MySQL.
Я столкнулся с этой проблемой, и оказалось, что gem был собран в системе Mac, и разработчик не учитывал другие операционные системы, поместив свой файл «mysql.sock» в каталог «/ tmp», а не «/ var /run /mysqld /mysqld.sock» .
Поэтому его файл «database.yml» выглядел как:
development:
adapter: mysql2
#encoding: utf8
database: somedatabase
pool: 5
username: someusername
password: somepassword
socket: /tmp/mysql.sock
Поскольку я был в системе Ubuntu, мне пришлось изменить свою на следующую:
development:
adapter: mysql2
#encoding: utf8
database: somedatabase
pool: 5
username: someusername
password: somepassword
socket: /var/run/mysqld/mysqld.sock
Да, ошибка может вводить в заблуждение, однако она не имеет никакого отношения к вашей «кодировке» или к тому, используете ли вы localhost или 127.0.0.1 (По крайней мере, в системах linux / UNIX они переводятся как одно и то же и являются синонимами)
Начать редактирование
Также нехорошо комментировать кодировку, как я делаю выше. Поэтому я привожу модификацию здесь для справки.
development:
adapter: mysql2
encoding: utf8
database: somedatabase
pool: 5
username: someusername
password: somepassword
socket: /var/run/mysqld/mysqld.sock
Завершить редактирование
Комментарии:
1. В моем случае, если вы переключаетесь с Ubuntu на Mac. Само собой разумеется, но вот быстрое решение
socket: /tmp/mysql.sock
Ответ №2:
думаю, у меня было что-то подобное … исправлено путем добавления этого в database.yml:
host: 127.0.0.1
Или, в вашем случае, изменить ее с localhost.
Комментарии:
1. Сегодня наткнулся на аналогичное сообщение об ошибке, и этот метод сработал для меня, спасибо.
Ответ №3:
Я получал ту же проблему с mysql2 gem. Затем я обнаружил, что мой MySQL прослушивает только ‘localhost’, а не ‘127.0.0.1’, поэтому я изменил его на ‘localhost’, и теперь у меня больше нет этой проблемы. Теперь все работает.
Ответ №4:
Итак, примерно через 3 или 4 дня поиска в Google и пробования стольких разных вещей, я как-то наткнулся на это:
http://geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/
И угадайте, что? ЭТО РАБОТАЕТ! ОТЛИЧНО. Что наводит меня на мысль, что проблема заключается в MySQL 5.5.10. Что-то в этом не просто хорошо сочетается с моей средой ruby / rails. Однако, как только я последовал инструкциям по ссылке выше (которые включают удаление mysql и повторную установку 5.1), мое приложение теперь отлично работает на моем локальном компьютере.
Надеюсь, это кому-то поможет!
Ответ №5:
Я хочу поделиться своим решением. У меня был мой database.yml следующим образом
default: amp;default
adapter: mysql2
encoding: utf8
username: root
password:
host: 127.0.0.1
port: 3306
development:
<<: *default
database: dev.database
Моя ошибка была в этой строке
database: dev.database
Итак, я пишу без (.)
database: devdatabase