0

私はこのRailsの初心者です。私は次のエラーを修正するために一生懸命働いています

C:\library>rake db:migrate --trace
(in C:/library)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
==  CreateBooks: migrating
====================================================
-- create_table(:books)
rake aborted!
An error has occurred, all later migrations canceled:

Mysql::Error: Table 'books' already exists: CREATE TABLE `books` (`id`
int(11) D
EFAULT NULL auto_increment PRIMARY KEY, `created_at` datetime,
`updated_at` date
time) ENGINE=InnoDB

問題を修正しなかったすべてのテーブルを手動で削除しました。現在使用されて いますrake db:drop db:create db:migrate が、それでもrakeabortedメッセージが表示されます。

C:\library>rake db:drop db:create db:migrate

(in C:/library)
rake aborted!
Mysql::Error: Specified key was too long; max key length is 767 bytes: 
CREATE UN
IQUE INDEX `unique_schema_migrations` ON `schema_migrations` (`version`)

また、schema.rbファイルがありません。

4

1 に答える 1

1

最初のメッセージは、移行が失敗したが適切にバックアウトされなかったことが原因である可能性があります。移行を実行する前に、データベースのスナップショットを作成して、問題が発生した場合に既知の適切な構成に復元できるようにすることをお勧めします。

2 番目のメッセージは、MySQL がこれを行うには「大きすぎる」フィールドにインデックスを作成しようとしていることを示しています。MySQL が UTF-8 文字を処理する方法により、各文字には 3 バイトのキー スペースが割り当てられます。これは、255 文字を超えるものには長さ制限を与える必要があることを意味します。そうしないと、少なくともそれについて文句を言う MySQL のバージョンでは機能しません。

奇妙に思えるのは、schema_migrationsテーブルを構築しようとして失敗していることです。これを引き起こす可能性のある MySQL 構成に異常はありますか? 古いバージョンですか?5.5 以上を推奨します。

于 2013-02-14T06:02:29.143 に答える