web-dev-qa-db-ja.com

DBテーブルを別のモジュールに移動する

これがcleanetica_advanced.installファイルです(私たちが取り組んでいるサイトの詳細を含む「カスタム」モジュールの):

<?php 
 function cleanetica_advanced_schema(){
 $ schema ['video'] = array(
 'description' => 'HTMLタイトルのビデオ'、
 'fields' => array(
 'id' => array(
 'description' => 'ビデオテーブルの主キー'、
 'type' => ' serial '、
' unsigned '=> TRUE、
' not null '=> TRUE、
)、
' urlinfo '=> array(
 'description' => 'ビデオを参照する文字列'、
 'type' => 'varchar'、
 'length' => '255'、
 ' not null '=> TRUE 
)、
' title '=> array(
' description '=>'ビデオのタイトル。管理部分でのみ使用されます '、
 'type' => 'text'、
 'size' => 'medium'、
 'not null' => TRUE 
)、
 'richtitle' => array(
 'description' => 'ビデオのHTML形式のタイトル'、
 'type' => 'text'、
 'size' => 'medium'、
 'not null' => TRUE 
)、
)、
 '主キー' => array( 'id ')、
); 
 
 return $ schema; 
} 
 
 function cleanetica_advanced_update_1(){
 drupal_install_schema( 'cleanetica_advanced'); 
}

「ビデオ」データベーステーブルと関連するものを管理するために、別のモジュールを作成する方が良いと思います。

問題は、「ビデオ」DBテーブルをすでに作成していることです。テーブルを他のモジュールに移動/転送するにはどうすればよいですか?

4
porton

最も簡単な方法は、既存のモジュールを完全にアンインストールし(無効にするだけでなく)、スキーマ定義を古いものから新しいものに切り取り、両方のモジュールを有効にすることです。アンインストールするとテーブルが削除され、インストールすると他のモジュールからテーブルが追加されます。

また、現在のモジュールからcleanetica_advanced_update_1()関数を削除することもできます。これをオフのままにすると、いくつかの興味深い不整合が発生する可能性があります。

1
Clive