Sequelize: Changing model schema on production
Solution 1
You want to implement Sequelize migrations:
http://docs.sequelizejs.com/manual/tutorial/migrations.html
These will enable you to transition developer, staging, and production databases between known states.
Solution 2
A quicker way would be using {alter: true}
option.
Ref: https://sequelize.org/master/class/lib/sequelize.js~Sequelize.html#instance-method-sync
Related videos on Youtube
Matt
Updated on August 21, 2020Comments
-
Matt over 3 years
We're using the orm sequelize.js and have defined a model as such:
module.exports = function(sequelize, DataTypes) { var Source = sequelize.define('Source', { name: { type: DataTypes.STRING, allowNull: false, unique: true } }, { paranoid: true }); return Source; };
This is deployed to production and sync'd to the database using
sequelize.sync
. Next step, we add a parameter:module.exports = function(sequelize, DataTypes) { var Source = sequelize.define('Source', { name: { type: DataTypes.STRING, allowNull: false, unique: true }, location: { type: DataTypes.STRING } }, { paranoid: true }); return Source; };
However, when deploying to production
sequelize.sync
does not add this new parameter. This is becausesync
does a:CREATE TABLE IF NOT EXISTS
And does not actually update the schema if the table exists. This is noted in their documentation.
The only option seems to be to
{ force: true }
, however this is not okay for a production database.Does anyone know how to properly update the schema when changes are necessary?
-
Zeeshan Jan almost 9 yearsI have a question around this. I can use sequelize-cli to create a new model and its corresponding migration script using sequelize model:create which creates a model and the migration script, is there any way same can be done when adding new columns or constraints. Do we have to manually write the migration scripts for these tasks or is there any way to auto generate the migration scripts.
-
Rizwan Patel over 7 yearsthat is the problem with sequelize we have to write manually mig scripts geez !
-
remjx over 5 yearsHere is an example migration github.com/abelnation/sequelize-migration-hello
-
articga over 4 yearsThe documentation says that it's not recommended in production:
Not recommended for production use. Deletes data in columns that were removed or had their type changed in the model.
-
MortezaE over 3 yearsAlso there is an
alter.drop
option:Prevents any drop statements while altering a table when set to false