4

我有这个模式,我需要定义两个主键;一个是 Drupal 的 'vid' 字段,另一个是我的站点 '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 回答