Javascript Knex在事务中创建mysql表
我正在尝试使用knex创建两个表作为事务的一部分,因此如果其中一个表的创建失败,所有内容都将回滚。文档不是很好 我遇到了两个问题。一个是,它似乎没有作为事务运行并正确回滚,因为Javascript Knex在事务中创建mysql表,javascript,node.js,promise,knex.js,Javascript,Node.js,Promise,Knex.js,我正在尝试使用knex创建两个表作为事务的一部分,因此如果其中一个表的创建失败,所有内容都将回滚。文档不是很好 我遇到了两个问题。一个是,它似乎没有作为事务运行并正确回滚,因为user存在,但user1在运行此代码之前不存在,但仍会创建user1 代码也永远不会结束,所以我相信我有一个未处理的承诺,但没有得到一个错误声明 const knex = require('knex')({ client: 'mysql', connection: { host: '127.0.0.1',
user
存在,但user1
在运行此代码之前不存在,但仍会创建user1
代码也永远不会结束,所以我相信我有一个未处理的承诺,但没有得到一个错误声明
const knex = require('knex')({
client: 'mysql',
connection: {
host: '127.0.0.1',
user: 'root',
password: 'pass',
database: 'test'
}
});
return knex.transaction(trx => {
return Promise.all([
knex.raw('CREATE TABLE user1 (name VARCHAR(20));').transacting(trx),
knex.raw('CREATE TABLE user (name VARCHAR(20));').transacting(trx)
])
.then(trx.commit)
.catch(trx.rollback);
}).then(()=>{
console.log('success')
}).catch((err)=>{
console.log('fail')
});
Mysql在每次DDL查询后都会执行隐式提交,因此无法在使用Mysql的单个事务中创建多个表 相关答案