Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在mysql/node.js中的sql事务中传递值_Javascript_Mysql_Sql_Node.js - Fatal编程技术网

Javascript 在mysql/node.js中的sql事务中传递值

Javascript 在mysql/node.js中的sql事务中传递值,javascript,mysql,sql,node.js,Javascript,Mysql,Sql,Node.js,我试图让我的应用程序执行以下SQL语句: START TRANSACTION; SELECT @habitId:=MAX(habits.habitId)+1 FROM habits; INSERT INTO habits(habits.habitId, habits.name, habits.repeatVal, habits.notification, habits.color, habits.question, habits.id) VALUES(@habitId, 'mysql test'

我试图让我的应用程序执行以下SQL语句:

START TRANSACTION;
SELECT @habitId:=MAX(habits.habitId)+1 FROM habits;
INSERT INTO habits(habits.habitId, habits.name, habits.repeatVal, habits.notification, habits.color, habits.question, habits.id) VALUES(@habitId, 'mysql test', 1, 1, '#786578', 'backend hello world', 14);
INSERT INTO habit_status(habit_status.habitId, habit_status.date, habit_status.status) VALUES(@habitId, "2021-04-01", 0), (@habitId, "2021-04-01", 0), (@habitId, "2021-04-01", 0), (@habitId, "2021-04-01", 0), (@habitId, "2021-04-01", 0), (@habitId, "2021-04-01", 0), (@habitId, "2021-04-01", 0), (@habitId, "2021-04-01", 0);
COMMIT;
这是我的代码:

static async save(habit){
    const connection = await mysql.createConnection({
        host: dbConfig.HOST,
        user: dbConfig.USER,
        password: dbConfig.PASSWORD,
        database: dbConfig.DB
    });
    await connection.execute('SET TRANSACTION ISOLATION LEVEL READ COMMITTED');
    console.log('Finished setting the isolation level to read committed');
    await connection.beginTransaction();
    console.log('Began Transaction');
    try {
        await connection.execute('SELECT @habitId:=MAX(habits.habitId)+1 FROM habits');
        console.log('first statement completed');
        await connection.commit();
        await connection.execute('INSERT INTO habits(habits.habitId, habits.name, habits.repeatVal, habits.notification, habits.color, habits.question, habits.id) VALUES (@habitId, ?, ?, ?, ?, ?, ?)', +
                                [habit.name, habit.repeatVal, habit.notification, habit.color, habit.question, habit.id]);
        console.log('second statement completed');
        await connection.commit();
        await connection.execute('INSERT INTO habit_status(habit_status.habitId, habit_status.date, habit_status.status) VALUES (@habitId, "2021-04-01", 0), (@habitId, "2021-04-02", 0), (@habitId, "2021-04-03", 0), (@habitId, "2021-04-04", 0), (@habitId, "2021-04-05", 0), (@habitId, "2021-04-06", 0), (@habitId, "2021-04-07", 0), (@habitId, "2021-04-08", 0)');
        console.log('third statement completed');
        await connection.commit();
    } catch (err) {
        console.error(`Error occurred while creating habit: ${err.message}`, err);
        connection.rollback();
        console.info('Rollback successful');
        return 'error creating habit';
    }
事务在第一个select语句后失败,错误如下:

已完成将隔离级别设置为“已提交” 开始交易 第一份声明已完成 创建习惯时出错:通信数据包格式错误。错误:通信数据包格式不正确。 代码:“ER_格式错误的_数据包”, 厄尔诺:1835年, sqlState:'HY000', sqlMessage:'格式不正确的通信数据包。'

我的交易有什么问题