it-swarm-ko.tech

Drupal 7에서 라이브 사이트의 필드 설정 변경

내용을 입력하는 도중에 내가 이전에 설정 한 특정 필드의 길이가 15 자로 충분하지 않다는 것을 알았습니다.

Drupal6에서는 cck 필드의 설정을 변경할 수있었습니다. 잠재적으로 위험 할 수 있지만 필자의 경우 무손실 변환이므로 필드의 최대 크기를 조금 더 길게 만들고 싶습니다.

그러나 Drupal7에서는 데이터베이스의 해당 필드에 일부 내용이 저장되어 있으므로 필드 설정을 변경할 수 없다는 메시지가 나타납니다.

이 제한은 나에게 너무 엄격한 것 같습니다. 경고 메시지로 충분합니다.

그래서 내 질문은이 행동의 이유와 내 경우에 무엇을 할 수 있습니까? 컨텐츠를 수동으로 삭제하고 다시 작성하는 것은 옵션이 아닙니다.

2
Dmitry Vyal

Drupal 6과 달리 텍스트 필드의 최대 길이 설정은 데이터베이스에 영향을 미치지 않았지만 유효성 검사 만 추가했습니다. Drupal 7 실제로 선택한 수의 문자 만 저장할 수있는 열을 만듭니다.

데이터베이스에서 테이블을 변경해야하므로 UI를 통해이 문제를 해결할 수 있습니다.

필드 테이블에서 값 열의 최대 길이를 변경하면됩니다.

  • field_data_ [필드 이름]
  • field_revision_ [필드 이름]

변경해야하는 열은 [FIELD_NAME] _value (이)라고합니다.

그런 다음 필드의 field_config 테이블에있는 데이터 열의 직렬화 된 데이터 인 구성을 변경해야합니다. PHP 직렬화 된 데이터에 익숙한 경우 직접 편집하거나 drupal_write_record로 수행 할 수 있습니다. 일반적인 API 함수 field_update_field 필드를 저장할 수없는 예외가 발생하므로 작동하지 않습니다. 그러나 field_info_field 데이터베이스에 저장된 필드 데이터를 가져옵니다.

간단히 말해, 할 수는 있지만 적절한 API를 사용하지 않는 DB에 대한 사용자 지정 해킹이 필요합니다.

다른 방법은 새 필드를 만들고 데이터를 마이그레이션 한 다음 이전 필드를 삭제하는 것입니다.

6
googletorp

대부분의 경우, 특히 개발 또는 테스트 중 (이미 필드의 데이터가 필요하지 않은 경우) 필드를 완전히 삭제하고 처음부터 다시 작성하기 만하면됩니다. 현장에서 데이터를 보관해야하는 경우 googletorp에서 설명한 수동 프로세스를 수행하는 것이 좋습니다.

Field API가 명시 적 길이의 텍스트 필드를 처리하는 새로운 방법은 어려울 수 있지만 경우에 따라 요청 속도를 크게 높일 수 있습니다. 즉, 구성 상충 관계에 문제가 없습니다. 항상 한 두 자릿수 앞서 생각하십시오 ;-)

1
geerlingguy