web-dev-qa-db-ja.com

カスタムモジュール.installがデータベースにテーブルを作成しない

カスタムモジュールのデータベーステーブルを作成します。

mymodule.installの内部:

function mymodule_schema(){
    $schema['a_visits'] = array(

    'description' => 'visits table',
    'fields' => array(
        'id' => array(
            'description' => 'make id primary key auto increment',
            'type' => 'serial',
            'not null' => TRUE,
        ),
        'oferta' => array(
            'description' => 'nazwa oferty',
            'type' => 'varchar',
            'length' => '255',
            'not null' => TRUE,
        )
    ),
    'primary key' => array('id'),
    );
    return $schema;
}

function mymodule_install() {
   drupal_install_schema('a_visits');
}


function mymodule_uninstall() {
   drupal_uninstall_schema('a_visits');
}

次に、モジュールのファイルをsites/all/modules/custom/mymoduleの下のサーバーに移動し、管理パネルで有効にしました。残念ながらデータベースにテーブルが作成されていません(モジュールは現在アクティブとしてリストされています)。

2
PolGraphic

hook_schemaだけでデータベーステーブルを作成できます。私はあなたが単にモジュールを無効にしてから有効にしていると思いますが、これはデータベースにテーブルを作成するのに役立ちません。機能させるには、admin/modules' locate your module and disable it. Then navigate to 'admin/modules/uninstall' and again locate your module and uninstall it. After this, go toadmin/modules '、モジュールを有効にします。これで、データベース内のそれぞれのテーブルを見つけることができます。

同じ用にdrushを使うこともできます。 drush dis module_name、次にdrush pm-uninstall module_name そして最後に drush en module_name

また、@ OPTASY Canadaに従って、警告やエラーがないかdblogを確認してください。

4
AkiShankar

これだけが機能します。最初にこのモジュールをアンインストールしてから再インストールしてください。

function mymodule_schema(){
    $schema['a_visits'] = array(

    'description' => 'visits table',
    'fields' => array(
        'id' => array(
            'description' => 'make id primary key auto increment',
            'type' => 'serial',
            'not null' => TRUE,
        ),
        'oferta' => array(
            'description' => 'nazwa oferty',
            'type' => 'varchar',
            'length' => '255',
            'not null' => TRUE,
        )
    ),
    'primary key' => array('id'),
    );
    return $schema;
}
2
Sugandh Khanna