国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

[已解決]webman 的model->create mysql事務(wù)用不起嗎

Snow

問題描述

webman 的model->create mysql事務(wù)用不起嗎
截圖

假設(shè)下面的sql報錯
截圖
截圖

實(shí)際情況是 數(shù)據(jù)庫成功添加,而回滾沒有回滾起

操作系統(tǒng)及workerman/webman等框架組件具體版本

1.4.3
php 7.4
mysql8.0 表是innodb
ORM 使用的laravel

解決方案 以及原因總結(jié)

laravelORM 在webman框架中config->database文件中是
// 默認(rèn)數(shù)據(jù)庫
'default' => 'mysql',
// 各種數(shù)據(jù)庫配置
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'database' => 'webman',
'username' => 'webman',
'password' => '',
'unix_socket' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
如果將默認(rèn)default 修改為 ‘XXX’
connections=>mysql[修改為XXX]
甚至設(shè)置第二個庫 ,第三個庫,這個時候在model里面會產(chǎn)生設(shè)置$connection指定庫的情況

如果你在使用
Db::beginTransaction();
打開事務(wù)的時候,事務(wù)是會找不到哪一個庫去打開事務(wù),也就會產(chǎn)生事務(wù)失效【程序會認(rèn)為,我找不到庫,直接跳過該行代碼】

故此需要在開啟事務(wù)的時候需要改變一下寫法
Db::connection('所操作的庫(database設(shè)置的名稱)')->beginTransaction();
Db::connection('xxx')->beginTransaction();

1956 2 2
2個回答

nitron

貼下代碼吧,球球了

  • Snow 2022-11-21

    貼了 老鐵

  • nitron 2022-11-21

    報錯信息?
    catch塊有沒有加回滾?

  • Snow 2022-11-21

    加了的

  • Snow 2022-11-21

    貼上去了

  • nitron 2022-11-21

    catch (Throwable $e) 試試, 報錯信息是個嘛?也加一下?

  • Snow 2022-11-21

    要得

  • Snow 2022-11-21

    才嘗試了,還是回滾不了

powerbowen

catch (Throwable $e)

catch (\PDOException $e)

試試?

  • Snow 2022-11-21

    要得

  • Snow 2022-11-21

    才嘗試了,還是回滾不了

  • powerbowen 2022-11-21

    ?,你怎么捕獲的,貼全

  • powerbowen 2022-11-21

    1.要不你試試 Throwable 2.然后你啥都不干,直接用回滾試試

  • Snow 2022-11-21

    直接回滾 不讓報錯,回滾失敗,數(shù)據(jù)庫添加成功

  • Snow 2022-11-21

    我還嘗試了 直接關(guān)閉try catch 直接執(zhí)行sql 然后 還是回滾失敗

  • Snow 2022-11-21

    use support\Db; 這個應(yīng)該是沒得錯的噻

  • nitron 2022-11-21

    你在第一個SQL操作直接回滾

  • Snow 2022-11-21

    我換了個業(yè)務(wù)簡單的test方法

  • Snow 2022-11-21

    public function index(Request $request): Response
    {
    Db::beginTransaction();
    CollectionsWarehouse::query()->create([
    'user_id'=>'111',
    'serial_number'=>1,
    'collection_id'=>1,
    'gift_number'=>1,
    'term_date'=>time(),
    'update_time'=>time(),
    ]);
    Db::rollBack();
    return json(['11111']);
    }
    回滾失敗

  • nitron 2022-11-21

    換成這樣 CollectionsWarehouse::create ?

  • powerbowen 2022-11-22

    http://www.wtbis.cn/q/9701 看這個和你的是否一樣

  • sharf 2023-11-08

    model里定義了連接 protected $connection = 'mysql';,需要 Db::connection('mysql')->beginTransaction();

年代過于久遠(yuǎn),無法發(fā)表回答
??