I use knex
and have a MySql db table that was created with the following:
exports.up = function (knex, Promise) {
return knex.schema.table("members", (table) => {
table.string("member_activation_hash", 255);
table.dateTime("member_activation_sent_at");
});
};
Now I would like to change (only) the name of both columns, and was thinking of the following:
exports.up = function(knex) {
return knex.schema.raw(
"ALTER TABLE `members` CHANGE `member_activation_hash` `user_activation_hash` STRING DEFAULT NULL",
"ALTER TABLE `members` CHANGE `member_activation_sent_at` `user_activation_sent_at` datetime DEFAULT NULL"
);
};
But I'm not sure about STRING
on line 3. When it was created it included 255
but I don't think STRING(255)
is an option and VARCHAR(255)
would change the data type (which I don't want). What would be the correct way to only change the name of member_activation_hash
?
Update: So I now have:
exports.up = function(knex) {
return knex.schema.raw(
"ALTER TABLE `members` RENAME COLUMN `member_activation_hash` TO `user_activation_hash`",
"ALTER TABLE `members` RENAME COLUMN `member_activation_sent_at` TO `user_activation_sent_at`"
);
};
But this produces the error:
migration failed with error: Expected 1 bindings, saw 0 Error: Expected 1 bindings, saw 0 at replaceRawArrBindings (C:\Users\xxx\node_modules\knex\lib\raw.js:141:11) at Raw.toSQL (C:\Users\xxx\node_modules\knex\lib\raw.js:78:13)