SchemaAPIを使用していますが、テーブルを作成できません。これは、ほとんどの場合サンプルモジュールからコピーされるschema_test.installの内容です。
<?php
function schema_test_install() {
drupal_install_schema('schema_test');
}
function schema_test_schema() {
$schema['schema_test_one'] = array(
'description' => 'Stores example person entries for demonstration purposes.',
'fields' => array(
'pid' => array(
'type' => 'serial',
'not null' => TRUE,
'description' => 'Primary Key: Unique person ID.',
),
'uid' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'description' => "Creator user's {users}.uid",
),
'name' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Name of the person.',
),
'surname' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
'description' => 'Surname of the person.',
),
'age' => array(
'type' => 'int',
'not null' => TRUE,
'default' => 0,
'size' => 'tiny',
'description' => 'The age of the person in years.',
)
),
'primary key' => array('pid'),
'indexes' => array(
'name' => array('name'),
'surname' => array('surname'),
'age' => array('age'),
),
);
return $schema;
}
/* vim: set ts=8 sw=2 tw=79 cc=80 ft=php:*/
スキーマモジュールも有効にしており、このスキーマが[不足]の下に表示されます。したがって、認識されますが、モジュールが有効になっているときはインストールされません。ここで何が欠けていますか?
Drupal 7でdrupal_install_schema
を呼び出す必要がないという事実により、私は引っ掛かりました。また、hook_install
を使用してテーブルでアクションを実行する必要があります設定するのではなく、.
Drupal 7はスキーマを認識し、モジュールがアクティブ化されると自動的にインストールします。したがって、Drupal 7は手動で呼び出しているため、スキーマを2回インストールしようとしています。
これ は、少し説明するのに役立つかもしれません。
また、データベースをチェックインして、テーブルがすでに存在するかどうかを確認してください。正しくインストールされていない場合、Drupalはテーブルを見て、実際には正しくないのに正しいと考えている可能性があります。
Drupal 7で、スキーマによって定義されたテーブルを作成/再作成するには、モジュールを手動でアンインストールする必要があることがわかりました。
これを行うには、まずモジュールを無効にしてから、[モジュール]ページの[アンインストール]タブをクリックします。次に、モジュールをアンインストールして再度有効にします。これにより、インストールフックが実行されます。