次の関数は、process_loginというカスタムモジュールの一部として、process_login.installに含まれています。データベーステーブルを手動で作成した場合、モジュールは機能しますが、当然のことながら、インストール時にテーブルが自動的に作成されます。
関数自体は、モジュールのインストール時にスキーマエラーを生成しません。しかし、Drupal 7 MySQLデータベースにデータベーステーブルprocess_login_registerも作成しません。
私が見ることができる他のエラー、またはサイトレポートによって報告された問題はありません。
私はそれを完全に削除し、何度も再インストールしました。私はWebを広範囲に検索し、Drupal開発に関する2冊の本を調べました。この機能に問題はありません(以下に記載)。
注:私も '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()
ます。モジュールのインストールは、(アンインストールタブまたはdevel / reinstallを使用して)アンインストールした後にのみ実行できます。その後、モジュールによって作成されたすべてのテーブルが削除されます。次にモジュールをインストールすると、hook_install()
予想どおりに実行されます