2013-02-14 88 views
1

我有一个非常简单的迁移不工作:运行remove_column在轨迁移

class RemoveAuthorIdFromBooks < ActiveRecord::Migration 
    def change 
    remove_column :books, :author_id 
    end 

end 

,但我得到了以下错误:

Mysql2::Error: Error on rename of './mysite_staging/#sql-3b1_3c78' to './mysite_staging/books' (errno: 150): ALTER TABLE `books` DROP `author_id` 

这是表的说明:

+------------------+---------------+------+-----+---------+----------------+ 
| Field   | Type   | Null | Key | Default | Extra   | 
+------------------+---------------+------+-----+---------+----------------+ 
| id    | int(11)  | NO | PRI | NULL | auto_increment | 
| author_id  | int(11)  | NO | MUL | NULL |    | 
| title   | varchar(255) | NO |  | NULL |    | 
| teaser   | varchar(500) | NO |  | NULL |    | 
| description  | varchar(2000) | YES |  | NULL |    | 
| cover_image  | varchar(255) | NO |  | NULL |    | 
| publication_date | date   | NO |  | NULL |    | 
| enabled   | tinyint(1) | NO |  | 1  |    | 
| created_at  | datetime  | NO |  | NULL |    | 
| updated_at  | datetime  | NO |  | NULL |    | 
| excerpt   | text   | YES |  | NULL |    | 
| featured   | tinyint(1) | YES |  | NULL |    | 
| site_id   | int(11)  | YES |  | NULL |    | 
+------------------+---------------+------+-----+---------+----------------+ 

任何线索?

+0

什么是当前表的样子? ('rails db'然后描述书籍)。另外,你使用的是什么版本(Rails,Mysql2。OS?) – Novae 2013-02-14 20:02:45

+0

Rails 3,mysql2,Ubuntu on Amazon ec2。 – Tony 2013-02-14 20:06:45

+0

可能与http://stackoverflow.com/q/1451042/684934 – bdares 2013-02-14 20:13:06

回答

1

由于某种原因,外键约束打破了放下句子。

我做了以下内容:

show create table books; 

看着外键名称,然后:

alter table books drop foreign key books_ibfk_1; 

然后耙分贝:迁移工作。

5

如果有人仍与轨道4面对这一以上,那么你可以做以下

remove_reference(:books, :author, index: true, foreign_key: true)

+0

非常感谢。它解决了我的问题。 !!!!!!!!! – 2016-07-27 04:29:40