没有活跃交易'

问题描述 投票:0回答:2

此功能有问题

wipe_data

这个

wipe_data
功能我的数据库清理和管理数据插入 但这个函数显示错误:

没有活跃交易

这是我的代码:

 function wipe_data() {
     DB::beginTransaction();
     $adminData = User::where('role', 'admin')->first();  
    try {
        User::truncate();
        User_details::truncate();
        User_kyc::truncate();
        Token::truncate();`enter code here`
        $auto_id = date('Y');
        DB::statement("ALTER TABLE ls_users AUTO_INCREMENT = $auto_id");
        $admin = new User();
        $admin->username = $adminData->username;
        $admin->email = $adminData->email;
        $admin->password = $adminData->password;
        $admin->role = $adminData->role;
        $admin->save();
        $user_id = User::where('role', 'admin')->value('id');
        DB::commit();
    } catch (\Exception $ex) {
        DB::rollback();
        return false;
    }
    return true;
}
php laravel-8
2个回答
7
投票

有一些语句会导致隐式提交,包括您正在使用的

ALTER TABLE
语句。

因此,在你调用

DB::commit()
之前,你的语句已经被提交了,因此发生了错误。


0
投票

truncate() 是另一个带有隐式 commit() 的语句。 它曾经在事务内工作,但在迁移到 Amazon RDS for MySQL - AWS MySQL 8 后,脚本开始抛出此错误。

© www.soinside.com 2019 - 2024. All rights reserved.