我有这个架构,需要定义两个主键;一个是Drupal的“ vid”字段,另一个是我的站点的“出价”字段,该字段具有自动递增类型,这又要求它是主键:否则我会收到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;
}

最佳答案

使用以下内容对我来说很好。也许这是特定于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'),
);

07-28 02:37
查看更多