2016-12-11 1 views
1

데이터베이스에 꽤 긴 텍스트가 있고 PaperTrail의 object 최대 길이 (MySQL의 경우 :text 필드의 경우 64KB 인 것 같습니다)를 초과하는 것으로 보입니다.PaperTrail : "데이터가 너무 긴 열 '개체"를 처리하는 방법

PaperTrail은 각 버전 필드의 이전 및 이후 값을 하나의 단일 object 필드에 항상 저장하므로이 제한이 매우 빨리 초과 된 것 같습니다. 그래서 예. 모델의 버전 1 텍스트 필드를 사용할 때 텍스트 필드는 가능한 최대 길이의 1/2를 초과해서는 안되며, 그렇지 않으면 object 필드의 한계가 이미 초과되었습니다. 2 개의 텍스트 필드가있는 경우 텍스트 필드는 최대 길이의 ~ 4 분의 1을 초과해서는 안됩니다.

그럼 어떻게해야합니까? object에 더 큰 필드 유형을 사용해야합니까? 레일즈 마이그레이션에서 작동하는 것을 찾을 수 없으므로 이것이 옳다고 생각하지 않습니다.

답변

1

object 열의 제한을 늘려 문제를 해결했습니다.

class ChangeVersionsObjectToMediumText < ActiveRecord::Migration 
    def change 
    # Needed because of this: http://stackoverflow.com/questions/41088654/papertrail-how-to-handle-data-too-long-for-column-object 
    change_column :versions, :object, :text, limit: 16.megabytes - 1 
    end 
end 
+1

PT 4.0.0.rc2부터 생성 된 마이그레이션은 정확하게이 작업을 수행합니다. https://github.com/airblade/paper_trail/commit/4ba85e2548af43aa5ea09311cb56932a9153d99f를 참조하십시오. 나는 당신이 그것을 알아 냈기 때문에 기쁘다! –

+0

잘 알고 있습니다. 고맙습니다. –

관련 문제