다음 함수는 process_login이라는 사용자 정의 모듈의 일부로 process_login.install에 포함되어 있습니다. 이 모듈은 데이터베이스 테이블을 수동으로 생성 한 경우 작동하지만 당연히 설치시 자동으로 생성 된 테이블을 원합니다.
함수 자체는 모듈 설치시 스키마 오류를 생성하지 않습니다. 그러나 Drupal 7 MySQL 데이터베이스에 데이터베이스 테이블 process_login_register도 작성하지 않습니다.
다른 오류나 사이트 보고서에서보고 된 문제가 없습니다.
나는 그것을 완전히 제거하고 여러 번 다시 설치했습니다. 웹을 광범위하게 검색했으며 Drupal 개발에 관한 두 권의 책을 참고했습니다. 이 기능에 문제가 없습니다 (아래 참조).
참고 : 나는 또한 'id'를 직렬로 정의하려고 시도했지만 동일한 결과를 얻습니다 (즉, 테이블이 생성되지 않음).
아이디어가 부족합니다. 이 기능이 작동하지 않는 이유를 아는 사람이 있습니까?
function process_login_schema(){
$schema['process_login_register'] = array(
'description' => 'Register a specific computer with the system.',
'fields' => array(
'id' => array(
'description' => 'Primary identifier.',
'type' => 'int',
'unsigned' => TRUE,
'size' => 'normal',
'not null' => TRUE,
'default' => 0,
),
'ip' => array(
'description' => "The user's IP address at registration.",
'type' => 'varchar',
'length' => 32,
'not null' => TRUE,
'default' => '',
),
'user_agent' => array(
'description' => "The user's browser user agent string at registration.",
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
),
),
'primary key' => array('id'),
);
return $schema;
}
hook_enable()
합니다. 모듈을 설치 제거한 후에 만 설치 제거를 수행 할 수 있습니다 (제거 탭 또는 디벨 / 다시 설치 사용). 그 후에 모듈에 의해 작성된 모든 테이블이 삭제됩니다. 그런 다음 모듈을 설치하면 hook_install()
예상대로 실행됩니다