問題タブ [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.
c++ - 自動コミットが無効で、ロールバックがない場合はどうなりますか?
そのため、多くの mysql 作業を行う大規模な C++ コード ベースを継承しました。 コードは常に自動コミットを無効にし、次のような関数を持つ傾向があります。
明らかに、ここでの意図は、クエリが成功した場合にのみコミットが発生することです。しかし、そのうちの 1 つがそうでない場合はどうなりますか? 最終的に、mysql 接続は適切に閉じられますが、コードにロールバックはありません。
それで、それが閉じるとき、それは基本的に成功した変更をコミットするだけですか? それとも何もなかったかのようにロールバックしますか?
私の直感では、成功した最初のクエリを「元に戻す」ために、2 番目のクエリが失敗した場合にロールバックすることは理にかなっています。したがって、この関数は最終的にトランザクションになります。
もちろん、このコードは本質的に壊れていると思います。以前の作業が失敗した場合、後で他の mysql コードがコミットを実行して、物事を「奇妙な」状態にする可能性があるからです。しかし、プログラムの動作を変更する前に、現在の動作がどのようなものかを理解しておく必要がありました。
php - PHP:PGSQLドライバーとAutoCommit?
プロジェクトでpg_connectとpg_queryを使用しています。しかし、それがAutoCommitモードを使用しているpg_connectであるかどうかは本当にわかりませんか?
重要な質問です。トランザクションの下でブロックを作成する必要があり、ステートメントの1つがサーバーによって無視されると、データベースに一貫性がなくなります...
pg_queryが実行後にコミットするという興味深い質問もありますか?
例えば:
と同じです
とは
AutoCommitモードで動作しているので、それでも開始してコミットしますか?
あなたの助けをありがとう:dd
spring-mvc - Spring MVC JDBC DataSourceTransactionManager: readonly=true の後でもデータがコミットされる
現在、Spring MVC アプリケーションを開発しています。JDBC TransactionManager を構成し、AOP XML を使用して宣言型トランザクション管理を行っています。ただし、読み取り専用 = true で実行するようにメソッドを構成しても、トランザクションはコミットされます。
データベース: オラクル 10g
私のdatabase-config.xml
私のコントローラー
自動コミットを防ぐにはどうすればよいですか? また、トランザクション管理コードを何も配置しなくても、コードがコミットされることにも気付きました。ただし、RuntimeException に no-rollback-for を設定してから 1/0 を実行すると、トランザクションのアドバイスが呼び出されることに注意してください。また、スレッドをスリープ状態にしてクエリのタイムアウトを試してみましたが、それでも機能しませんが、タイムアウトは実際のクエリの可能性があると考えているので、問題ありません。前もって感謝します!
php - MySQL 自動コミット - 挿入は無視されます
私はいくつかのテーブルを持つ MySQl データベースを持っています。すべて UTF-8 と MyISAM ストレージです。PHP では、大量のデータをテーブルに書き込む XML ファイルを解析しています。単純な Insert ステートメントと mysqli 関数のみを使用しています。
テーブルにはそれほど多くの読み取りアクションはなく、挿入中のアクションはありません。まず、パフォーマンスが非常に遅かったため、スクリプトの先頭に SET AUTOCOMMIT = 0 を追加しました。
私が今抱えている問題は、たとえば 3 番目の foreach ループにあるすべての挿入が無視され、mysql テーブルに表示されないことです。それ以前は大丈夫です。
私の質問は、何が間違っているのか、どうすればよいのかということです。
自動コミットがオンの場合 = すべてが挿入されますが、非常に遅い 自動コミットがオフの場合 = すべてが非常に高速ですが、多くの挿入が無視されます
うまくいけば、誰かがアイデアを持ち、助けてくれるでしょう。
transactions - spring 3.1: jdbcTemplate の自動コミットが false に。
こんにちは、春の jdbctemplate で autocommit を false に設定する方法です。
問題は、トランザクション (ロールバック オプション) の代わりに、トランザクションの最後にクエリをコミットしたいということです。
だから代わりに
挿入 --> コミット --> ロールバック。
挿入したい->失敗->(コミットなし)。
hibernate - SpringMVCを使用した休止状態で自動コミットをfalseに設定する方法
私は現在、Spring + Hibernateの統合を学習しており、これまでのところ、それを機能させるようにしています。しかし、テストとデバッグの目的で生成されたSQLステータスを確認したいだけなので、プロセスの最後にトランザクションをコミットしたくないという状況に遭遇しました。
すでに休止状態のプロパティにfalseを追加しましたが、それでも機能しません。
Springを使用してHibernateトランザクションを処理する場合、達成することは可能ですか?Hibernateで従来のトランザクションを使用する場合は可能であるため、session.commit()メソッドを呼び出さないでください。そうすると、すべての更新と挿入が保存されません。
現在、サービスレイヤー用に次のコードがあります。
@Transactional(propagation = Propagation.SUPPORTS、readOnly = true)public class EmployeeServiceImpl {
}
Daoレイヤーのコード:
}
しかし、ここで起こることは、トランザクションをコミットすることです!しかし、テストとデバッグの目的のためだけにトランザクションをコミットしたくありません。
@Transactional(propagation = Propagation.SUPPORTS、readOnly = true)の代わりに@Transactional(propagation = Propagation.SUPPORTS、readOnly = false)も試しました
ただし、ここで発生するのは、トランザクションをコミットしないことですが、従業員の数も増加しません。
したがって、ここで発生することを期待しているのは、従業員テーブルに挿入する前に従業員の数をカウントすることです。次に、employeeテーブルに挿入し、employeeの数を再度カウントして、1ずつインクリメントします。ただし、プロセスの最後に、その挿入をコミットしたくありません。
アイデアの人はいますか?
助けていただければ幸いです。ありがとう!
jdbc - SQL PreparedStatement & 自動コミット
「自動コミットがオフ」の JDBC 接続を使用して PreparedStatement を作成する場合、commit() を呼び出してトランザクションを永続的にする必要がありますか? それとも準備呼び出しだけで十分ですか? ステートメントを準備し、後で実行するために保持したいだけであることに注意してください。
どうもありがとう!
ios - Core Data: 自動コミットのデフォルト状態
iOS Core Data の autocommmit のデフォルト状態と、それを変更できるかどうか疑問に思っています。公式ドキュメントには言及が見つかりませんでした。SOで私はこれだけを見つけました。ネイティブのsqliteフレームワークには、自動コミットの状態を判断するための低レベルの機能があると言われています。自動コミットがデフォルトで設定されている場合、設定を解除することでパフォーマンスを向上させることは可能でしょうか?
oracle - JDBC 接続のデフォルトの autoCommit 動作
Oracleに接続するためにJDBCを使用しています。connection.setAutoCommit(false)
vsをテストconnection.setAutoCommit(true)
したところ、結果は予想通りでした。
デフォルトでは、接続はautoCommit(true)
[間違っていたら訂正してください]のように機能するはずですconnection.commit()
が、呼び出されるまでレコードは挿入されません。デフォルトの動作に関するアドバイスはありますか?
mysql - BEGIN および START TRANSACTION 使用時の MySQL AUTOCOMMIT ステータス
MySQL のプロジェクトでトランザクションを使用する必要があります。しかし、使用する必要があるかどうかはわかりませmysql_query("SET AUTOCOMMIT=0");
ん。
私は2つのオプションがあることを知っています:
- 始める
- 取引開始
また、両方のアイテムのうちの 1 つは使用する必要がないと聞いていますAUTOCOMMIT = 0
。実際に
いつ使用する必要があるかを知るのを手伝ってください。 Withまたは with ?AUTOCOMMIT = 0
BEGIN
START TRANSACTION
ありがとうございました。