Knex 种子和主键序列
Knex seed and primary key sequence
我使用 knex.js 进行播种和迁移。使用类似于以下的代码。
exports.down = function(knex, Promise) {
knex.schema.table('users', function(table) {
table.dropColumn('fullname')
})
}
exports.seed = function(knex, Promise) {
// Deletes ALL existing entries
return knex('users').del()
.then(function () {
// Inserts seed entries
return knex('users').insert([
{
id: 1,
email: 'nigel@email.com',
password: 'dorwssap'
},
{
id: 2,
email: 'nakaz@email.com',
password: 'password1'
},
{
id: 3
email: 'jaywon@email.com',
password: 'password123'
}
]);
});
};
但是当我尝试将新数据插入 table 时 - 在我手动更新序列之前自动增量不起作用。我该如何解决这个问题?
当使用显式 id
插入数据时,postgresql 不会从 id_sequence 中读取值,因此序列不会在每次插入时递增。
您需要在不明确提供 ID 的情况下创建数据,否则您需要在创建初始数据后更新每个 table 的 ID 序列以更正值。
我使用 knex.js 进行播种和迁移。使用类似于以下的代码。
exports.down = function(knex, Promise) {
knex.schema.table('users', function(table) {
table.dropColumn('fullname')
})
}
exports.seed = function(knex, Promise) {
// Deletes ALL existing entries
return knex('users').del()
.then(function () {
// Inserts seed entries
return knex('users').insert([
{
id: 1,
email: 'nigel@email.com',
password: 'dorwssap'
},
{
id: 2,
email: 'nakaz@email.com',
password: 'password1'
},
{
id: 3
email: 'jaywon@email.com',
password: 'password123'
}
]);
});
};
但是当我尝试将新数据插入 table 时 - 在我手动更新序列之前自动增量不起作用。我该如何解决这个问题?
当使用显式 id
插入数据时,postgresql 不会从 id_sequence 中读取值,因此序列不会在每次插入时递增。
您需要在不明确提供 ID 的情况下创建数据,否则您需要在创建初始数据后更新每个 table 的 ID 序列以更正值。