0

私はぶつかり、ここや他のフォーラムを検索したようですが、何もありません。Rails3.2.3とRuby1.9.3を実行していて、Herokuにアプリをデプロイしたいと考えています。

杉を作成しましたgit push heroku masterが、完全に500サーバーエラーが発生します。私のDBがないからだと思います。しかし、私はそれをそこに到達させることができないようです。私は実行しました:

heroku run rake db:create->これにより、非推奨についていくつかの警告が出され、その後dkhgclqccm already exists

それで、それはすでに存在しますか?それでは、移行しましょう。

heroku run rake db:migrate ただし、これは次のように出力します。

<deprecation errors>
rake aborted!
An error has occurred, this and all later migrations canceled:

PG::Error: ERROR:  relation "hphotos" does not exist
: ALTER TABLE "hphotos" ADD COLUMN "description" character varying(255)

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

その特定の移行は次のとおりです。

class AddDescriptionToHphotos < ActiveRecord::Migration
  def change
    add_column :hphotos, :description, :string
  end
end

それは私には良いようです、なぜそれが私にこのエラーを与えるのか分かりません:/

最後に、この移行が機能したとしても、私のDBは空になり、seeds.rbにはデータベースに必要なすべてのデータがありません。だから私は穴DBを押すことについて考えました。

heroku db:push         
 !    Taps Load Error: cannot load such file -- sqlite3
 !    You may need to install or update the taps gem to use db commands.
 !    On most systems this will be:
 !
 !    sudo gem install taps

なぜこれが表示されているのですか?'heroku'gemと'taps'gemをインストールし、gemファイルでこれを取得しました。

group :development, :test do
  gem 'mysql2'
end
group :production do
  gem 'pg'
end

また、実行するheroku run rake db:versionと、次のように表示されます。現在のバージョン:20120508130957これは、現在のバージョンでは実際には5回の移行が不足していますが、上記のエラーを示すように移行できません...

前もって感謝します

4

3 に答える 3

1

Heroku にはデータベースがセットアップされています (これがdb:create機能しなかった理由です)。試しましたheroku run rake db:schema:loadか?これにより、schema.rb ファイルが取得され、DB にロードされます。db:migrateこれは、毎回新しい DB をセットアップするよりもはるかに優れた方法です。

編集:

タップに関する最後の質問については、sqlite をローカルで使用しようとしているようですが、Gemfile には pg しかありません。おそらく config/database.yml にありますadapter: sqlite。そのため、ローカルで postgres を使用してそのアダプターを postgres に変更するか、より簡単な方法でローカルで sqlite を使用し、それを :development グループに追加する必要があります。

heroku は postgres のみを使用することに注意してください。そのため、いくつかの構文に矛盾があり、2 つのプラットフォーム間でいくつかのことを行う方法があるため、mysql から開発することはお勧めしません。繰り返しますが、ANSI 互換のクエリのみを使用している場合、または単にレールのメソッドを使用してクエリをアクティブにしている場合は、どちらの方法でも問題ありません。

于 2012-05-15T18:50:24.513 に答える
0

移行を綿密にチェックして、実際に次のようなファイルがあるかどうかを確認する必要があると思います。

  def up
    create_table :hphotos do |t|
      [...]
    end

テーブルがリモートで作成されておらず、変更しようとしているようです。

于 2012-05-15T20:23:52.603 に答える
0

解決策は、タップの gem だけでなく、sqlite3gem も Gemfile、:developmentグループに追加することです。開発で使用している場合は、gem をsqlite3追加tapsするだけで十分です。

ただし、mysql2開発に使用しているため、その問題を解決するには両方を追加する必要があります。

group :development do
  gem 'taps'
  gem 'sqlite3'
end
于 2015-09-29T08:31:34.493 に答える