これは「セーブポイントが存在しません」を検索するときのGoogleでの一番の答えなので、ここにもソリューションを追加します。
TRUNCATE
がありました トランザクションで実行されたコード内のステートメント。これにより、暗黙のコミットが発生し、トランザクションが終了しました。トランザクションの外部にセーブポイントを作成してもエラーは発生せず、実行されません。つまり、何かがおかしいことに最初に気付くのは、セーブポイントを解放/ロールバックしようとしたときです。
これは、暗黙のコミットを引き起こすステートメントの完全なリストです。 https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html