2012-03-02 8 views
3

私のモジュールをdrupal6からdrupal 7に変換しようとしていますが、これは私のコードです。データベーステーブルは作成されません。Drupal7 .installスクリプトが動作しない

function example_install() { 
    drupal_install_schema('example'); 
} 
/** 
* Implements hook_schema(). 
*/ 
function example_schema() { 
    $schema['example'] = array(
    'description' => 'example settings', 
    'fields' => array(
     'name' => array(
     'description' => 'name', 
     'type' => 'varchar', 
     'length' => '255', 
     'not null' => TRUE, 
    ), 

     'age' => array(
     'description' => 'age', 
     'type' => 'int', 
    'size' => 'tiny', 
     'not null' => TRUE, 
    ), 
) , 
); 
    return $schema; 
} 

何かを間違って説明することはできますか。

+0

?あなたがこれを実行するときに何かが起こる? – ManseUK

+0

いいえ、モジュールが有効になっているだけです。 – Ramesh

答えて

8

drupal_install_schema()をDrupal 7で実行したくない場合は、hook_schema()が.installファイルに存在する場合は、自動的に呼び出されます。それはおそらくいくつかの問題を引き起こしますが、テーブルを少なくとも1回は作成することを期待しています。

hook_install()を削除したら、モジュールをアンインストールして(無効にするだけではなく)、再度有効にしてください。私はDevel moduleが、モジュールの再インストールを容易にすることができるページ(devel/reinstall)を提供するので、これを行うことをお勧めします。

モジュールのページに移動し、モジュールを無効にしてから、[アンインストール]タブをクリックして完全にアンインストールします。次に、モジュールページに戻り、再度有効にします。

これを行うと、Drupalはhook_schema()スクリプトを強制的に再実行し、テーブルを作成する必要があります。

+0

Thnx sooo much ...それは働いた!私は1時間のようにこれに立ち往生した!再びthnx ... –

+0

この例では、無効なインデックスを参照していたデータベースを作成しようとしていたため、このポストも役に立ちました。テーブルは単純に作成されず、何がうまくいかないかを見るためのデバッグ出力が見つかりませんでした。最後に、「索引」を修正してアンインストールを実行すると、多くのことが再現されました。 –

関連する問題