Wir verwenden die ORM sequelize.js und haben ein Modell als solche definiert:Sequelize: Ändern Modellschema auf die Produktion
module.exports = function(sequelize, DataTypes) {
var Source = sequelize.define('Source', {
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true
}
}, {
paranoid: true
});
return Source;
};
Diese zur Produktion eingesetzt wird und in die Datenbank synchronisierten sequelize.sync
verwenden. Im nächsten Schritt fügen wir einen 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;
};
Wenn jedoch der Produktion bereitstellen sequelize.sync
nicht diese neuen Parameter hinzuzufügen. Dies liegt daran, sync
tut ein:
CREATE TABLE IF NOT EXISTS
und aktualisiert nicht eigentlich das Schema, wenn die Tabelle vorhanden ist. Dies ist noted in their documentation.
Die einzige Option scheint { force: true }
zu sein, dies ist jedoch für eine Produktionsdatenbank nicht in Ordnung.
Kann jemand das Schema richtig aktualisieren, wenn Änderungen notwendig sind?
Sie haben meinen Tag gerettet! –
Ich habe eine Frage dazu. Ich kann sequelize-cli verwenden, um ein neues Modell und das zugehörige Migrationsskript zu erstellen, indem ich sequelize model: create verwende, das ein Modell und das Migrationsskript erstellt. Kann ich beim Hinzufügen neuer Spalten oder Einschränkungen auf die gleiche Weise vorgehen. Müssen wir die Migrationsskripte für diese Aufgaben manuell schreiben oder gibt es eine Möglichkeit, die Migrationsskripte automatisch zu generieren? –
das ist das problem mit sequelize wir müssen manuell schreiben mig scripts geez! –