#mysql #ruby-on-rails #ruby-on-rails-3
#mysql #ruby-on-rails #ruby-on-rails-3
Вопрос:
Хорошо, я только что переустановил MySQL Servers 5.5 (с 32-разрядной на 64-разрядную) на моем 64-разрядном компьютере с Windows 7. Затем я предпринял шаги по использованию mysql2 для rails:
gem 'mysql2', '0.2.6'
gem 'rails', '3.0.7'
Шаг 1:
rake db:drop
Couldn't drop store_development : #<Mysql2::Error: Unknown database 'store_development'>
Странно, потому что в MySQL Workbench я вижу только тестовую базу данных.
Шаг 2:
$ rake db:migrate
rake aborted!
Unknown database 'store_development'
Понятия не имею, почему я получаю эту ошибку, поэтому я пытаюсь сбросить базу данных сейчас.
Шаг 3:
rake db:reset
(in C:/store)
Couldn't drop store_development : #<Mysql2::Error: Unknown database 'store_development'>
store_test already exists
-- create_table("business_online_stores", {:force=>true})
-> 0.1110s
-- create_table("business_retail_stores", {:force=>true})
-> 0.0740s
-- create_table("businesses", {:force=>true})
-> 0.0900s
-- create_table("products", {:force=>true})
-> 0.0810s
-- create_table("user_prices", {:force=>true})
-> 0.0720s
-- create_table("users", {:force=>true})
-> 0.1810s
-- initialize_schema_migrations_table()
-> 0.2800s
-- assume_migrated_upto_version(0, "db/migrate")
-> 0.0320s
You have 6 pending migrations:
20110909175650 DeviseCreateUsers
20110929161120 CreateUserPrices
20111004023516 CreateProducts
20111007023521 CreateBusinesses
20111009215120 CreateBusinessRetailStores
20111009215419 CreateBusinessOnlineStores
Run "rake db:migrate" to update your database then try again.
Да, тестовая база данных уже существует, но где находится эта база данных Ghost development? Как это сбрасывает миграции, но скажите мне перенести их снова. Хорошо, я сделаю, как сказано сейчас:
Шаг 4:
$ rake db:migrate
(in C:/store)
== DeviseCreateUsers: migrating ==============================================
-- create_table(:users)
rake aborted!
An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'users' already exists: CREATE TABLE `users`
Шаг 5:
$ rake db:migrate
rake aborted!
Unknown database 'store_development'
Невозможно, я зашел в свой MySQL Workbench и удалил базы данных тестирования и разработки, щелкнув по ним правой кнопкой мыши и выполнив необходимые шаги, поэтому ничего не существует, даже когда я ее обновляю, но я получаю это сообщение об ошибке о базе данных, которая не существует.
Как мне решить эту проблему?
Примечание: 0.2.7
Вызывает у меня те же проблемы.
Примечание: Это мои первые 2 файла миграции, просто поместите в них всех, кто хотел их увидеть:https://gist.github.com/1341682
Комментарии:
1. не могли бы вы, пожалуйста, показать файл миграции для пользователей и следующий за ним.
2. @Ross Хорошо, я вставил это в основную ссылку.
Ответ №1:
Просто мысль, но Users
уже есть записи в столбце email? Интересно, не помешает ли существующая дублирующая запись добавлению проверки :unique=>true
И просто чтобы проверить, что вы хотели сделать?:
add_column :users, :email, :string
вместо add_index?
Комментарии:
1. На данный момент в ней нет никаких записей, о которых я знаю. Есть ли у них способ узнать? Я только что установил сервер MySQL и совершенно новичок в нем, поэтому я не мог быть уверен на 100%. Нет, я пытаюсь add_index, так как, когда я пытаюсь заполнить, он сказал, что у меня было 6 ожидающих миграций, что является общим количеством миграций в моем приложении прямо сейчас. Если это поможет, я использую Devise gem для аутентификации пользователя, запустив его заново с gem.
2. Ох. Если вы хотите просто удалить пользователей, попробуйте: rake db:migrate:down VERSION=20111106043251… где ВЕРСИЯ равна временной метке, добавленной к файлу миграции, который вы назвали ‘DeviseCreateUsers’
3. Похоже, что в этом случае это будет: rake db:migrate: down VERSION =20110909175650.
4. Проблема изменилась, теперь я получаю базу данных ghost. Взгляните на мой вопрос сейчас, он довольно отличается, но имеет дело с той же проблемой.
5. Извините. Я сейчас не в своей тарелке. Я собираюсь сделать свою первую попытку переноса приложения Rails на производственный сервер. Я ожидаю, что буду использовать Phusion Passenger, чтобы упростить путь. Возможно, это тоже упростило бы ситуацию в вашем случае? Ссылка на P.P. находится здесь: modrails.com
Ответ №2:
Единственный известный мне способ решить эту проблему — воссоздать все мое приложение.