2013-02-14 2 views
1

레일 마이그레이션 작동하지 remove_column 실행 :내가 아주 간단한 마이그레이션이

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

end 

을하지만 다음과 같은 오류 얻을 :

+------------------+---------------+------+-----+---------+----------------+ 
| 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 |    | 
+------------------+---------------+------+-----+---------+----------------+ 
:이 테이블의 설명은

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

입니다

실마리가 있습니까?

+0

다음? ('rails db'그리고 책을 설명;). 또한, 어떤 버전을 사용하고 있습니까 (Rails, Mysql2. OS?) – Novae

+0

레일 3, mysql2, Amazon ec2의 우분투. – Tony

+0

아마도 http://stackoverflow.com/q/1451042/684934와 관련이 있습니다 – bdares

답변

1

어떤 이유로 외래 키 제약 조건으로 인해 드롭 문장이 깨졌습니다.

show create table books; 

다음 외래 키 이름에 고개 :

alter table books drop foreign key books_ibfk_1; 

그런 다음 DB를 긁어 : 근무로 마이그레이션

나는 다음과 같은했다.

5

사람이 여전히 위의 레일 4이 직면하고 경우에, 당신은 할 수있는 현재 테이블처럼 보이는 무엇을

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

+0

고마워요. 그것은 내 문제를 해결했다. !!!!!!!!! –

관련 문제