Pregunta

Tengo este esquema, que tengo que definir dos claves primarias; uno es el campo 'vid' de Drupal y el otro es mi campo sitio 'oferta' que es del tipo de incremento automático que a su vez exige que sea una clave principal: wtherwise me sale error de MySQL. Estoy teniendo problemas para encontrar la sintaxis para definir varias claves primarias en un esquema de Drupal. Si alguien me puede ayudar con la sintaxis, aprecio bastante.

$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;
}
¿Fue útil?

Solución

El uso de la siguiente funcionaba bien para mí. Tal vez sea una limitación versión específica de MySQL? Se puede informar del mensaje de error real que tienes cuando Drupal trató de crear esta tabla?

$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'),
);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top