function message_update_7013 in Message 7
message.mid is part of the primary key but is not specified to be 'not null'.
File
- ./
message.install, line 537 - Install, update, and uninstall functions for the message module.
Code
function message_update_7013() {
// Here we have some special concern:
// 1. Keep the field as serial so the auto_increment will not affected.
// 2. Before setting (or change) a field as serial PK should be dropped.
// 3. BTW, if change a serial field without any index will fail in MySQL.
// Let's add a temporary unique key for mid so MySQL will let it go.
db_add_unique_key('message', 'temp_key', array(
'mid',
));
// Now remove the PK before changing a field as serial (well, even it is
// already a serial field, originally).
db_drop_primary_key('message');
// Here we can successfully alter the serial field without error message.
// See https://api.drupal.org/api/drupal/includes!database!database.inc/function/db_change_field/7
db_change_field('message', 'mid', 'mid', array(
'type' => 'serial',
'unsigned' => TRUE,
'description' => 'The Unique ID of the message.',
'not null' => TRUE,
), array(
'primary key' => array(
'mid',
),
));
// Finally, remove the temporary unique key because no longer useful.
db_drop_unique_key('message', 'temp_key');
}