web-dev-qa-db-ja.com

モジュールインストールでのテーブル作成が機能しないのはなぜですか?

モジュールのカスタムテーブルを作成する必要がありますが、モジュールインストールテーブルが作成されません。

module.installファイル:

function bip_content_migration_schema() {

    $schema['bip_migrate'] = array(

            'description' => 'Storing content migration info from Joomla.',
            'fields' => array(

                    'id' => array(
                            'description' => 'id',
                            'type' => 'serial',
                    ),
                    'content_type' => array(
                            'description' => 'content type',
                            'type' => 'varchar',
                            'not null' => TRUE,
                            'length' => 255,
                    ),
                    'imported_count' => array(
                            'description' => 'imported count',
                            'type' => 'int',
                            'not null' => TRUE,
                            'default' => 0,
                    ),
                    'to_import_count' => array(
                            'description' => 'to import count',
                            'type' => 'int',
                            'not_null' => TRUE,
                    ),
                    'is_imported' => array(
                            'description' => 'is imported',
                            'type' => 'int',
                            'default' => 0,
                    ),
            ),
            'primary key' => array('id'),
            'indexes' => array(
                    'id' => array('id'),
            ),
    );
    return $schema;

}

何が悪いのですか?

[〜#〜]編集[〜#〜]

.installファイルに関数を追加しました(テーマを省略できると思います)

function bip_content_migration_install() {
    drupal_install_schema('bip_content_migration');
}

function bip_content_migration_uninstall() {
    drupal_uninstall_schema('bip_content_migration');
}

しかし、再びテーブルは作成されません。

1
Codium

Drupal 7では、drupal_install_schema()、またはdrupal_uninstall_schema()を呼び出す必要はありません。これは、Drupalから自動的に実行されます。hook_schema()とデータベーステーブルが作成されますDrupal 7のモジュールが多数あり、そのフックを実装して、データベーステーブルが作成されます。

データベーステーブルが作成されない原因として、次の2つが考えられます。

  • モジュールの短縮名はbip_content_migrationではありません
  • すでにインストールされているモジュールにhook_schema()実装を追加しました

モジュールをインストールして無効にし、コードを変更して再度有効にした場合、データベーステーブルは作成されません。モジュールの無効化は、モジュールのアンインストールとは異なります。アンインストールは、モジュールが無効になっているときに行われ、admin/modulesの[アンインストール]タブからアンインストールされます。

screenshot

Drupalでエラーが発生するはずだったので、次の2つのケースは考慮しませんでした。

  • スキーマが正しくありません
  • モジュールのインストール中、Drupalはデータベースに接続できません。

さらにデータベースがある場合は、正しいデータベースを確認していることを確認してください。

6
kiamlaluno

これは古いですがとにかく知っています。モジュールの変更re-enableを確認する場合は、まずモジュールを無効にしてアンインストールする必要があります。使用する

drush dre [モジュール]

詳細はこちら hook_schemaはデータベーステーブルを作成していません

1
Martin Taleski

モジュールを無効にします。 'system'テーブル名の列(drupalデータベース)でモジュール名を検索し、その特定の列を削除します。モジュールを有効にして再試行してください。テーブルが作成されます。

0
user42559