4

このスキーマがあり、2つの主キーを定義する必要があります。1つはDrupalの「vid」フィールドで、もう1つは私のサイトの「bid」フィールドです。これは自動インクリメントタイプであり、主キーである必要があります。そうしないと、MySQLエラーが発生します。Drupalスキーマで複数の主キーを定義するための構文を見つけるのに問題があります。誰かが構文を手伝ってくれるなら、私はそれをとても感謝しています。

$schema['rft'] = array(
    'fields' => array(
        'vid' => array(
            'type' => 'int',
            'unsigned' => TRUE,
            'not null' => TRUE,
            'default' => 0,
        ),
        'nid' => array(
            'type' => 'int',
            'unsigned' => TRUE,
            'not null' => TRUE,
            'default' => 0,
        ),
        'bid' => array(
            'type' => 'serial',
            'size' => 'medium',
            'not null' => TRUE,                         
        ),

    ),
    'indexes' => array(
        'nid' => array('nid'),
    ),
    'primary key' => array('vid'),  //array('vid','bid') doesn't work
);

return $schema;
}
4

1 に答える 1

8

以下を使用することは私にとってはうまくいきました。多分それはMySQLのバージョン固有の制限ですか?Drupalがこのテーブルを作成しようとしたときに表示された実際のエラーメッセージを報告できますか?

$schema['rft'] = array(
    'fields' => array(
        'vid' => array(
            'type' => 'int',
            'unsigned' => TRUE,
            'not null' => TRUE,
            'default' => 0,
        ),
        'nid' => array(
            'type' => 'int',
            'unsigned' => TRUE,
            'not null' => TRUE,
            'default' => 0,
        ),
        'bid' => array(
            'type' => 'serial',
            'size' => 'medium',
            'not null' => TRUE,                         
        ),

    ),
    'indexes' => array(
        'nid' => array('nid'),
    ),
    'primary key' => array('vid', 'bid'),
);
于 2010-08-17T15:41:56.053 に答える