0

私はherokuでデプロイできるように、レールアプリフォームsqliteをpostgresに変換中です。Postgres をインストールして移行を実行しましたが、クエリを実行して家に関連付けられているすべての同居人を見つけようとすると、次のエラーが発生します。

PG::Error: ERROR:  operator does not exist: character varying = integer
LINE 1: SELECT COUNT(*) FROM "mates"  WHERE "mates"."house_id" = 1
                                                           ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
: SELECT COUNT(*) FROM "mates"  WHERE "mates"."house_id" = 1

このエラーは、家を追加した後に作成および管理者にリダイレクトされるサインアップ ビューから発生します。ビューコードは次のとおりです。

Extracted source (around line #4):

1: <div class="container">
2:  <div class="row">
3:      <div class="span5 offset3">
4:          <% if current_house.mates.empty? %>
5:              <h2>Add an Administrator</h2>
6:          <% else %>
7:              <h2>Add a New Housemate</h2>

助けてくれてありがとう!

4

2 に答える 2

0

テーブル mates の house_id 列を文字型として定義しました。これは整数である必要があります。一部の RDBMS はこれを許容していますが、PostgreSQL はそうではありません。

これを移行で修正し、データベース スキーマに他の同様のエラーがないか確認する必要があります。

文字列には数値以外の値が含まれる可能性があるため、移行時に次の SQL ステートメントを発行する必要があります。

alter table  mates
alter column house_id
type integer using cast(house_id as integer);
于 2013-07-14T21:00:38.217 に答える
0

移行に移動add_house_id_to_matesし、3 行目を文字列から整数に変更します。20130628212206_change_type_of_house_id_in_house.rbこの後、移行を削除します。

移行をゼロから実行します。

rake db:drop db:create db:migrate

于 2013-07-14T21:20:42.187 に答える