不要怂,就是干,撸起袖子干!

Commit 6d2dbdb7 by Mick Hansen

Merge pull request #1588 from LoicMahieu/hotfix/rename-column

renameColumn: non-null column can't default null
2 parents 85a4166d 72fae94e
...@@ -400,6 +400,11 @@ module.exports = (function() { ...@@ -400,6 +400,11 @@ module.exports = (function() {
defaultValue: data.defaultValue defaultValue: data.defaultValue
} }
// fix: a not-null column cannot have null as default value
if (data.defaultValue === null && !data.allowNull) {
delete options[attrNameAfter].defaultValue;
}
if (this.sequelize.options.dialect === 'sqlite') { if (this.sequelize.options.dialect === 'sqlite') {
// sqlite needs some special treatment as it cannot rename a column // sqlite needs some special treatment as it cannot rename a column
SQLiteQueryInterface.renameColumn.call(this, tableName, attrNameBefore, attrNameAfter, emitter, queryAndEmit) SQLiteQueryInterface.renameColumn.call(this, tableName, attrNameBefore, attrNameAfter, emitter, queryAndEmit)
......
...@@ -174,4 +174,44 @@ describe(Support.getTestDialectTeaser("QueryInterface"), function () { ...@@ -174,4 +174,44 @@ describe(Support.getTestDialectTeaser("QueryInterface"), function () {
}) })
}) })
}) })
describe('renameColumn', function() {
it('rename a simple column', function(done) {
var self = this
var Users = self.sequelize.define('_Users', {
username: DataTypes.STRING
}, { freezeTableName: true })
Users.sync({ force: true }).success(function() {
self.queryInterface.renameColumn('_Users', 'username', 'pseudo').complete(done)
})
})
it('rename a column non-null without default value', function(done) {
var self = this
var Users = self.sequelize.define('_Users', {
username: {
type: DataTypes.STRING,
allowNull: false
}
}, { freezeTableName: true })
Users.sync({ force: true }).success(function() {
self.queryInterface.renameColumn('_Users', 'username', 'pseudo').complete(done)
})
})
it('rename a boolean column non-null without default value', function(done) {
var self = this
var Users = self.sequelize.define('_Users', {
active: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: false
}
}, { freezeTableName: true })
Users.sync({ force: true }).success(function() {
self.queryInterface.renameColumn('_Users', 'active', 'enabled').complete(done)
})
})
})
}) })
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!