0

我有下表结构的php应用程序

CREATE TABLE IF NOT EXISTS `artist_has_fans` (
`artist_id` int(11) NOT NULL,
`fan_id` int(11) NOT NULL,
 PRIMARY KEY (`artist_id`,`fan_id`),
 KEY `fk_artist_has_artist_artist2` (`fan_id`),
 KEY `fk_artist_has_artist_artist1` (`artist_id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

我需要在 rails 中编写迁移,以便表具有自动增量的主键 id。其次,由于表已经有一些数据,我需要为 id 列插入数据。然后我需要从现有列中删除主键。

感谢您对编写迁移的任何帮助。

4

1 回答 1

2

从上面看,它看起来就像一个连接表。您是否打算向它添加其他属性,或者您只是想让它与 Rails 一起使用?您可以只使用has_and_belongs_to_manyrails 内的关系,并且不需要 ID 字段。

像下面这样的东西应该可以工作,而不必修改你的表。

class Artist < ActiveRecord::Base
   ...
   has_and_belongs_to_many :fans, :join_table => 'artist_has_fans'

end 

但是如果你想改变表以在 mysql 中添加主键

   def_up
      execute <<-SQL
       ALTER TABLE artist_has_fans ADD id INT PRIMARY KEY AUTO_INCREMENT;
      SQL
   end 

这应该为所有现有行创建 id 并添加值

于 2013-04-26T12:16:25.983 回答