Грешка при мигрирането на MySQL Rails: Грешка при преименуване на schema_migration (errno: -1)

Аз съм PHP разработчик и съм нов в Rails, но се справям доста добре, всичко изглежда доста лесно. Въпреки това до тази сутрин използвах SQLite и реших да преместя това, което изграждам, в MySQL. rake db:create работи перфектно, но когато се опитам да rake db:migrate получавам следната грешка:

рейк прекратен! Mysql::Грешка: Грешка при преименуване на './test_development/schema_migrations' на './test_development/#sql2-c7b-c' (errno: -1): СЪЗДАВАЙТЕ УНИКАЛЕН ИНДЕКС unique_schema_migrations НА schema_migrations (version)

Мислейки си, че това може да е грешка в скриптовете ми за миграция, създадох проект за чисти релси с най-простите таблици и получих същата грешка. И така, преинсталирах MySQL и mysql gem, за да се уверя, че не е нещо лошо с нито едно от тях и все още нямам късмет. Ето версиите, които изпълнявам:

  • Релси 2.3.4
  • Ruby 1.8.6
  • MySQL 5.1.40
  • MySQL Gem 2.8.1

Имам чувството, че може да е свързано с InnoDB, тъй като съм имал проблеми с този двигател преди на тази кутия. Но ако някой може да ми помогне, ще съм много благодарен, тъй като това ме спира да напредвам.

Благодаря,

Киран

АКТУАЛИЗАЦИЯ: По искане на Фил ето резултатите от:

ПОКАЖЕТЕ СЪСТОЯНИЕТО НА INNODB НА ДВИГАТЕЛЯ

и

ПОКАЗВАНЕ НА ПРОМЕНЛИВИ КАТО 'innodb%'


person Kieran Masterton    schedule 08.11.2009    source източник
comment
Както казвате, това вероятно е проблем с InnoDB. Ако можете да публикувате резултата от изпълнението на SHOW ENGINE INNODB STATUS и SHOW VARIABLES LIKE 'innodb%', тогава някой може да успее да забележи какво не е наред.   -  person Phil Ross    schedule 08.11.2009
comment
Благодаря, Фил, както беше поискано, актуализирах въпроса си с резултатите от двете заявки. Надяваме се, че може да помогне на някой да реши проблема.   -  person Kieran Masterton    schedule 08.11.2009


Отговори (1)


Имате зададена опция за innodb_force_recovery на 6. Това вероятно е променено от 0 по подразбиране, за да се коригира по-ранен проблем. InnoDB няма да позволи нищо друго освен SELECT, CREATE TABLE и DROP TABLE в този режим.

Опитайте да изключите MySQL и след това да редактирате вашия файл my.cnf. Задайте innodb_force_recovery на 0 (или премахнете опцията) и след това рестартирайте MySQL.

person Phil Ross    schedule 08.11.2009
comment
Арх! Наистина добавих това при предишен повод, за да коригирам друг проблем. Извинения и благодаря за помощта! - person Kieran Masterton; 08.11.2009