Не удается открыть db:create: all — не удалось создать базу данных для {«encoding»=> «utf8», «username»=> «root», «adapter»=> «mysql»

#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