Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rails中的迁移返回找不到表错误_Ruby_Ruby On Rails 3_Activerecord_Migration - Fatal编程技术网

Ruby Rails中的迁移返回找不到表错误

Ruby Rails中的迁移返回找不到表错误,ruby,ruby-on-rails-3,activerecord,migration,Ruby,Ruby On Rails 3,Activerecord,Migration,我进行了一次新的迁移,以便在我的配料活动记录中添加一个价格列。尽管如此,当我运行railsdb:migrate时,我还是得到一个错误,说表成分不存在。以下是我的控制台命令: C:\Users\andri\Desktop\hoagieShop\hoagieShop>rails generate migration AddPriceToIngredients price:decimal, false:null --force invoke active_record remov

我进行了一次新的迁移,以便在我的配料活动记录中添加一个价格列。尽管如此,当我运行railsdb:migrate时,我还是得到一个错误,说表成分不存在。以下是我的控制台命令:

 C:\Users\andri\Desktop\hoagieShop\hoagieShop>rails generate migration 
 AddPriceToIngredients price:decimal, false:null --force
  invoke  active_record
  remove    db/migrate/20190124075954_add_price_to_ingredients.rb
  create    db/migrate/20190124080657_add_price_to_ingredients.rb

C:\Users\andri\Desktop\hoagieShop\hoagieShop>rails db:migrate
== 20190123201200 RemovePriceFromIngrendients: migrating 
======================
-- remove_column(:ingrendients, :price, :decimal)
rails aborted!
StandardError: An error has occurred, this and all later migrations 
canceled:
Could not find table ingrendients 
C:/Users/andri/Desktop/hoagieShop/hoagieShop/db/migrate/201901232 
01200_remove_price_from_ingrendients.rb:3:in change
bin/rails:4:in require
bin/rails:4:in <main>

Caused by:
ActiveRecord::StatementInvalid: Could not find table ingrendients


C:/Users/andri/Desktop/hoagieShop/hoagieShop/db/migrate/20190123201200_
remove_pr 
ice_from_ingrendients.rb:3:in change
bin/rails:4:in require
bin/rails:4:in <main>
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
C:\Users\andri\Desktop\hoagieShop\hoagieShop>rails生成迁移
AddPriceToIngElements价格:十进制,false:null——强制
调用活动记录
删除db/migrate/20190124075954_添加_价格_至_配料.rb
创建db/migrate/20190124080657_将_price_添加到_components.rb
C:\Users\andri\Desktop\hoagieShop\hoagieShop>rails数据库:迁移
==20190123201200从格式副本中删除价格:迁移
======================
--删除列(:ingrendients,:price,:decimal)
rails中止了!
StandardError:发生了一个错误,包括此迁移和所有以后的迁移
取消:
找不到表格式副本
C:/Users/andri/Desktop/hoagieShop/hoagieShop/db/migrate/201901232
01200从格式副本中删除价格。rb:3:更改中
箱子/轨道:4:需要时
箱子/轨道:4:in
原因:
ActiveRecord::StatementInvalid:找不到表IngRendents
C:/Users/andri/Desktop/hoagieShop/hoagieShop/db/migrate/20190123201200_
删除\u pr
冰来自地球。rb:3:正在变化
箱子/轨道:4:需要时
箱子/轨道:4:in
任务:TOP=>db:migrate
(通过使用--trace运行任务查看完整跟踪)
我已经多次删除并添加了此迁移,因此我不确定这是否起到了任何作用。
有人知道为什么会这样吗?谢谢你的帮助

在您的
20190123201200\u remove\u price\u from\u ingrendinents.rb
迁移中,这似乎是一个简单的输入错误,而不是在您生成的迁移中,请参见:

--删除列(:ingrendients,:price,:decimal)


它可能是
成分
而不是
InGendents
(在
dients
之前的额外
n

存在迁移
20190123201200
,该迁移应该从表(
InGendents
)中删除特定列(
price
)。但是整个表不存在–
无法在格式副本中找到表
。您到底不清楚什么?@spickermann但我键入addPriceToIngElements而不是addPriceToIngRendents@spickermann接下来要做的是rails db:migrate,您看到的其余命令都是自动生成的。@spickermann接下来要做的是rails db:migrate,您看到的其余命令都是自动生成的。这是不是我自己打的。我首先输入rails generate migration AddPriceToIngElements price:decimal,false:null--force,然后输入rails db:migrate,其余命令将作为error@ffblord错误不是来自刚刚创建的
addPriceToIngElements
迁移,而不是昨天创建的迁移,它包含在
20190123201200\u remove\u price\u from\u ingrendients.rb
中。当您运行
rails db:migrate
时,它会按照创建顺序(或者更确切地说,文件名上的时间戳)运行所有迁移,从最后一次成功运行的迁移开始。看起来你有一个昨天的迁移,它试图运行以前没有运行过的迁移,这就是抛出错误的原因。这是正确的答案。看起来可能是创建了一些迁移,但没有运行,可能是手动删除了迁移文件。这将导致OP看到的行为。