我的 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 列插入数据。 然后我需要从现有列中删除主键。
感谢任何有关编写迁移的帮助。
最佳答案
从上面看,它看起来就像一个连接表。您是否计划向其添加其他属性,或者您只是想让它与 Rails 一起使用?您可以只使用 Rails 内的 has_and_belongs_to_many
关系,并且不需要 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 并为所有现有行添加值
关于mysql - Rails迁移删除键并将数据添加到自动增量列id中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16236000/