我的本地系统上有一个PostGresql数据库。我在开发过程中使用它,我试图在Heroku系统上测试它。
注意我正在使用PostGresql,以便我可以使用模式。
我在本地系统上完美运行系统。
我转到Heroku页面,了解如何将我的数据库推送到服务器。 http://devcenter.heroku.com/articles/taps
> heroku db:push
大约5分钟后我得到
"PGError: ERROR: relation "schema_migrations" does not exist"
我想知道的是两折...... 在较小的层面上,我想知道为什么会这样。我的数据库是从头开始重建的吗? 在一个主要方面,我想知道如何解决这个问题。
简介:如何绕过db上的缺失表:推送?
解决在给出的答案中表达的担忧。
W:\RUBY\EDM>heroku run rake db:create
Running rake db:create attached to terminal... up, run.1
kzcgkswrss already exists
W:\RUBY\EDM>heroku run rake db:migrate
Running rake db:migrate attached to terminal... up, run.1
W:\RUBY\EDM>heroku db:push
Loaded Taps v0.3.23
Auto-detected local database: postgres://postgres:password@127.0.0.1/EDM2_develo
pment?encoding=utf8
Warning: Data in the app 'xxxx' will be overwritten and will not be r
ecoverable.
! WARNING: Potentially Destructive Action
! This command will affect the app: xxxx
! To proceed, type "xxxx" or re-run this command with --confirm c
xxxx
> xxxxx
Sending schema
Schema: 100% |==========================================| Time: 00:01:56
Sending indexes
schema_migrat: 100% |==========================================| Time: 00:00:01
....
users: 100% |==========================================| Time: 00:00:02
Sending data
31 tables, 5 records
schema_migrat: 0% | | ETA: --:--:--
Saving session to push_201202150351.dat..
!!! Caught Server Exception
HTTP CODE: 500
Taps Server Error: PGError: ERROR: relation "schema_migrations" does not exist
这个错误似乎与postGresql中存在的第二个架构有关。 看起来它推动了公共中的所有空表,但是一旦它试图推高第二个模式,它就失败了..
答案 0 :(得分:1)
尝试
heroku rake db:push
或许如果这不起作用,请
heroku rake db:migrate
首先,然后尝试第二个。
由于您尚未在Heroku上创建表格,因此您正在获取丢失的表格。您需要创建数据库并运行迁移。是的,这将创建一个新的数据库。
更新:
引用Daniel Vandersluis(来自this link):
使用rails迁移时,会自动创建一个名为schema_migrations的表,通过存储每次迁移的版本号(这是在文件名中作为迁移名称前面的数字,跟踪已应用的迁移)。即db / migrate / _20090617111204__migration.rb)。运行rake db:migrate以进行迁移时,只会运行之前未运行的迁移(即表中未包含其版本)(因此,更改已执行的迁移)运行db:migrate时无效。向下迁移时,schema_migrations中找到的所有版本都将大于您回滚的版本。
答案 1 :(得分:0)
你是否在heroku上运行了迁移?
<globalization fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="de-DE" uiCulture="de-DE" />
如果你没有那么可能那就是它