2012-04-26 4 views
0

테이블을 파티션 싶습니다. 테이블은 다음과 같습니다고유 필드가없는 mysql 파티션

create_table "multimedia", :force => true do |t|  
    t.integer "id" 
    t. binary "data"  
    t.integer "device_id"   
    t.datetime "created_at"     
end 

id는 기본 키
created_at 테이블에 대한 간단한 인덱스와 나는 필드 created_at하여 테이블을 분할 할 필요가

독특한이없는 것입니다. 내 테이블에는 지난 7 일 동안의 기록 만 있으므로 하루에 파티션을 나누고 싶습니다. 나는이 편안히 앉 쓰기 : 내가 테이블은 created_at으로 파티션이며 고유 수 없다는 것을 필요

A PRIMARY KEY must included all columns in the table's partitioning function

:

partition by range (to_days(created_at))   

    (PARTITION p20120417 VALUES LESS THAN (to_days('2012-04-17 23:59:59 +0200')),     
    PARTITION p20120418 VALUES LESS THAN (to_days('2012-04-18 23:59:59 +0200')),     
    PARTITION p20120419 VALUES LESS THAN (to_days('2012-04-19 23:59:59 +0200')),    
    PARTITION p20120420 VALUES LESS THAN (to_days('2012-04-20 23:59:59 +0200')),    
    PARTITION p20120421 VALUES LESS THAN (to_days('2012-04-21 23:59:59 +0200')),    
    PARTITION p20120422 VALUES LESS THAN (to_days('2012-04-22 23:59:59 +0200')),     
    PARTITION p20120423 VALUES LESS THAN (to_days('2012-04-23 23:59:59 +0200')),      
    PARTITION p20120424 VALUES LESS THAN (to_days('2012-04-24 23:59:59 +0200'))     
); 

코드가 나에게 오류를 제공합니다.

어떻게하면됩니까?

+0

스택 오버플로에 오신 것을 환영합니다. '{}'도구 모음 버튼을 사용하여 소스 코드 블록을 포맷하거나 모든 행에 4 개 문자 들여 쓰기를 추가 할 수 있습니다. 이번엔 내가 너 한테 해 줬어. –

답변

0

기본 키 (id, created_at)를 만들고 id가 고유하므로 고유해야합니다. create_at를 테이블 파티션 기준으로 사용할 수 있습니다.

관련 문제