1

私はこれと数日間戦ってきましたが、進歩を止めました。

Rails 4/Ruby 2.0 アプリケーションの開発で PostgreSQL を実行し始めています。この大部分は、私のデータを Sqlite から PostgreSQL に移行することです。非常にデータ量の多いアプリケーションがあります。

Railscast の指示に従っています: http://railscasts.com/episodes/342-migrating-to-postgresql

私はPostgreSQLを正しく稼働させています。

データの移行中にいくつかの問題に遭遇し、Github でこの作品を見つけました: https://github.com/ricardochimal/taps/issues/128

データを移行するために「tmp」と呼ばれる別の合理化されたアプリを作成するhak8orの指示に従いました。すべてがうまく動いているように見えました。データベース スキーマが変換され、テーブルのコピーが開始されました。

次に、このエラーを受け取りました:

postgres.rb:175:in `exec': PG::NumericValueOutOfRange: ERROR:  integer out of range (Sequel::DatabaseError)

データを調べてみたところ、1 つの列を bigint に変更する必要があることに気付きました。そこで、移行を作成して実行し、データ移行を再開しました。悲しいことに、私はまだ同じエラーがあります。

変換は、テーブルが作成された順序で行われているようです。変換する必要がある次のテーブルを確認しましたが、整数フィールドは 2 つしかありません。1 つは ID で、もう 1 つは関係の ID で、1 つはまだ空です。

誰にもアイデアはありますか?私は完全に困惑しています。

4

2 に答える 2

0

かなりの調査の後、データを移行しようとしたときに、「bigint」に変更した列が何らかの形で通常の整数列に変換されていることがわかりました。

これを修正する最も簡単な方法は、「bigint」型の新しい列を作成し、整数列の情報を「bigint」列にコピーしてから、古い整数列を削除することでした。

于 2013-10-15T20:02:33.073 に答える