Ruby on rails 迁移时出现以下错误

Ruby on rails 迁移时出现以下错误,ruby-on-rails,ruby,postgresql,rake,rails-migrations,Ruby On Rails,Ruby,Postgresql,Rake,Rails Migrations,我正在从事Rails2项目,在运行rake任务时遇到以下错误。有人能帮我解决这个问题吗 [root@localhost webapp]# rake db:migrate (in /root/public/webapp) == CreateWhereKeywords: migrating ============================================ -- create_table(:where_keywords) NOTICE: CREATE TABLE will

我正在从事Rails2项目,在运行rake任务时遇到以下错误。有人能帮我解决这个问题吗

[root@localhost webapp]# rake db:migrate
(in /root/public/webapp)
==  CreateWhereKeywords: migrating ============================================
-- create_table(:where_keywords)
NOTICE:  CREATE TABLE will create implicit sequence "where_keywords_id_seq" for serial column "where_keywords.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "where_keywords_pkey" for table "where_keywords"
   -> 0.0838s
-- execute("alter table where_keywords add constraint where_keyword foreign key (where_location_id) references \n        where_locations(id) on delete cascade")
rake aborted!
An error has occurred, this and all later migrations canceled:

PGError: ERROR:  foreign key constraint "where_keyword" cannot be implemented
DETAIL:  Key columns "where_location_id" and "id" are of incompatible types: character varying and integer.
: alter table where_keywords add constraint where_keyword foreign key (where_location_id) references 
        where_locations(id) on delete cascade

错误信息相当清楚:

键列“where_location_id”和“id”的类型不兼容:字符变化和整数

您正在创建
where\u关键字.where\u location\u id
列作为
varchar
,它需要是
整数
,以便可以在FK中引用
where\u locations.id
。您的迁移有如下内容:

create_table :where_keywords do |t|
  #...
  t.string :where_location_id
  #...
end
create_table :where_keywords do |t|
  #...
  t.integer :where_location_id
  #...
end
应该是这样的:

create_table :where_keywords do |t|
  #...
  t.string :where_location_id
  #...
end
create_table :where_keywords do |t|
  #...
  t.integer :where_location_id
  #...
end

向我们展示迁移中的代码,以及所有相关表的模式。谢谢,这解决了我的问题。我是新手,非常感谢你的指导