問題タブ [autocommit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PDO クラスに MySQL トランザクションを追加するにはどうすればよいですか?
MySQLサーバーに接続して通信するのに役立つPDOクラスを作成しました。私がやろうとしているのは、関数またはメソッドをクラスに追加して、コミットとロールバックとともにMySQLへのトランザクションを開くのに役立つことです。コミットとロールバックを使用したことはありません。
このクラスが呼び出されるたびに自動コミットを何らかの形で停止し、エラーがスローされるたびにロールバックし、このクラス ID が閉じられるたびにコミットすることが、シーンを作ると思います。
私の2つの質問は次のとおりです。1)接続を開いて複数のクエリを実行し、エラーがない場合はコミットすることをお勧めしますか?それ以外の場合はロールバックしてから接続を閉じますか?2)これを既存のクラスに追加するにはどうすればよいですか? は私の現在のPHPクラスです
通知を集めた後に編集 されましたが、この方法が必要ですか??
spring - 他のクエリの影響を受けるクォーツジョブ中にAutoCommit(false)を設定しますか?
データベース パーティションを実行するために春のデータ ソースに接続されているクォーツ ジョブがあります。
ロールバックまたはコミットが呼び出されるまで setAutoCommit(false) がトランザクションを開始することを理解しています。ただし、setAutoCommit(false) から setAutoCommit(true) まで、クォーツ パーティション中にユーザーが Web ページにアクセスすることによる Spring Webservlet からの他のクエリがトランザクションに含まれるかどうかはわかりません。
そのため、サーブレット クエリでエラーが発生すると、パーティション トランザクション全体がロールバックされます。
java - MySQL と BoneCP を組み合わせて使用すると、jdbc executeBatch がハングする
これは、ファイルから SQL を読み取り、バッチ更新を行うための私のコードです。
試したデータベース: HSQLDB(in-process mode)
, HSQLDB(memory mode)
,MySQL
試したDBプーリング: No Pooling(DriverManger)
, DBCP
,BoneCP
私のアプリケーションは次の順序で実行されます。
DB と DB プールのほぼすべての組み合わせはconn.setAutoCommit(true);
、コードで強調表示したものなしで完全に機能しBoneCP
ますMySQL
。この組み合わせを機能させるには、それをコードconn.setAutoCommit(true);
の最後に配置する必要がありupdate()
ます。そうしないと、プログラムは 3 番目のプロセス (2 番目のバッチ更新) の開始時にハングします。
私の推測では、write lock
が解放されるのを待っているためにハングしているということでした。最初batchUpdate()
にロックを保持した唯一の理由は、接続を自動的にコミットしないように設定したため、BoneCP が を解放しなかったためである可能性がありますwrite lock
。だから私は追加しsetAutCommit(true)
、それはうまくいきました。プログラムはもうハングしません。
それで、私はただ聞きたいのですが、私の推測は正しかったですか?それとも何か他の理由ですか?他の組み合わせでこの種の奇妙な動作が発生することはないので、これはバグと見なすべきでしょうか? ありがとう。
php - mysqli ロールバックが機能しない
Mysqli のドキュメントは、呼び出しautocommit(false)
が true を返す場合、クエリの自動コミットを無効にすることに成功したことを示しています。
それでも、次のコードのように作成されたトランザクションをロールバックしようとすると、情報が削除されたままになります。
この状況で何が問題になる可能性がありますか?
mysql - Play 1.2.4 自動コミット
Play 1.2.4 で MySQL の自動コミットを有効にするには?
Play 2.0 で自動コミットを見つけることができます。db.default.autocommit を使用してみましたが、無駄でした。また、コード、つまり setAutoCommit(true) を使用しますが、JPA がトランザクションをコミットしようとしたときに例外が発生しました。助けてください。
vim - メッセージプロンプト付きのvimrc自動コミット
vimrc で次のコマンドを使用して、保存時に自動コミットします。これはとても便利だと思います。ただし、毎回同じコミット メッセージが表示されるのは好きではありません。
autocmd BufWritePost * execute ':silent ! if git rev-parse --git-dir > /dev/null 2>&1 ; then git add % ; git commit -m "Auto-commit: saved %"; fi > /dev/null 2>&1'
私が望むのは、保存時にプロンプトを受け取り、コミットメッセージを提供するか、Enter キーを押して、急いでいるときにデフォルトとして「自動コミット: 保存された %」を使用できるようにすることです。
私はこの特定のコマンドで遊んでいましたinput()
が、運がありませんでした。
また、関数によって返された値を使用しようとしましたが、それも機能しませんでした。
php - php mysqli - トランザクションを単一のクエリに埋め込む
MySQli は、以下に示すように、「結合された」クエリの最初の選択部分に構文エラーがあると述べ続けます。
これはphpで「許可されていません」ですか? 次のように mysqli 関数を使用する必要がありますか?
私はmysqlでクエリを実行しました(var_dumpを使用してそのままフェッチした後)。完全に実行されているため、実際に構文の問題はないと思います。単弦?
START TRANSACTION WITH CONSISTENT SNAPSHOT;
autocommit を false に設定するだけでは満たされない追加の条件がいくつかあるのではないかと心配しています。
mysql - 新しいトランザクションを開始すると、現在のトランザクションが強制的にコミットされますか?
トランザクションを使用してデータベースにデータを書き込むサーバーがあり、すべてのクエリが成功した場合はコミットされ、そうでない場合はロールバックされます。ここで、サーバーの 2 つのインスタンスを同じデータベースとテーブルで同時に動作させたいと考えています。mysql のトランザクション ドキュメントを読んでいるときに、「トランザクションを開始すると、保留中のトランザクションがコミットされます」という文に気付きました。これは、サーバー A がトランザクション A を開始し、トランザクション A がまだ完了していない間にサーバー B がトランザクション B を開始した場合、トランザクション A は強制的にコミットされるということですか? これは私には意味がありません。この場合、トランザクション A が正常に完了するまでトランザクション B が実行されないようにするにはどうすればよいですか? SET autocommit = 0 は、この問題の代わりになりますか?
java - AutoCommit が jOOQ 2.6.1 および Tomcat プーリングで機能しなかった
私は jOOQ 2.6.1 と Tomcat ( docs ) からのプーリングを使用し、autocommit を true に設定しました。
次に、Apache DataSource オブジェクトを作成しました。
SpringのLazyConnectionDataSourceProxyを使用します。
jOOQ 2.6.1 からFactoryを使用します。
たとえば、次のような選択をすると:
... jOOQ は自動的に接続を閉じるはずです! しかし、jOOQ は接続を閉じません。しばらくすると、すべての接続が破棄されます。
私の問題の解決策を知っている人はいますか?jOOQ が自動的に接続を閉じるようにしたい! または、他のプーリング フレームワークを使用する必要がありますか?
jOOQ との相性が良いのはどれですか?