1 MySQL Autocommit-Einstellungen MySQL führt standardmäßig automatisch Commits aus, was bedeutet, dass für jede DML-Anweisung (Hinzufügen, Löschen und Ändern) implizit ein Commit als separate Transaktion ausgeführt wird. Wenn der Status auf „Geschlossen“ geändert wird, muss die DML-Anweisung manuell übermittelt werden, damit sie wirksam wird. mysql> Variablen wie „autocommit“ anzeigen; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | Autocommit | EIN | +---------------+-------+ Überprüfen Sie, ob das globale Auto-Commit aktiviert ist: mysql> globale Variablen wie „autocommit“ anzeigen; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | Autocommit | EIN | +---------------+-------+ Sie können den Vorgang ein- und ausschalten, indem Sie die Autocommit-Variable ändern. Schalten Sie den Autocommit-Modus für die aktuelle Sitzung aus mysql> set autocommit=0; mysql> Variablen wie „autocommit“ anzeigen; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | Autocommit | AUS | +---------------+-------+ Das globale Autocommit ist immer noch aktiviert mysql> zeige globale Variablen wie 'autocommit'; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | Autocommit | EIN | +---------------+-------+ Globales Autocommit deaktivieren mysql> globales Autocommit = 0 festlegen; mysql> globale Variablen wie „autocommit“ anzeigen; +---------------+-------+ | Variablenname | Wert | +---------------+-------+ | Autocommit | AUS | +---------------+-------+ Wenn der MySQL-Dienst nach dem Neustart weiterhin wirksam bleiben soll, müssen Sie Systemumgebungsvariablen festlegen. MySQL 5.7 Legen Sie den Autocommit-Wert unter [mysqld] in der cnf-Konfigurationsdatei fest. [mysqld] ... automatisches Commit = 0 Steuern der automatischen Übermittlung im FrühjahrDas MySQL JDBC-Treiberpaket mysql-connector-java aktiviert standardmäßig Auto-Commit für die Sitzungsverbindung, beispielsweise der Code der Version mysql-connector-java-8.0.22: //com.mysql.cj.protocol.a.NativeServerSession.java privater Boolescher Wert autoCommit = true; Häufig verwendete Datenbankverbindungspools wie HikariCP, Druid usw. aktivieren standardmäßig auch Auto-Commit und ändern die Auto-Commit-Einstellungen der Verbindung auf „True“. com.alibaba.druid.pool.DruidAbstractDataSource.java geschützter flüchtiger Boolescher Wert defaultAutoCommit = true; ... public void initPhysicalConnection(Connection conn, Map<String, Object> variables, Map<String, Object> globalVariables) throws SQLException { wenn (conn.getAutoCommit() != defaultAutoCommit) { //Setze das Autocommit der Verbindung auf true conn.setAutoCommit(defaultAutoCommit); } ... } HikariCP initialisiert DataSource mit Autocommit, das standardmäßig auf „true“ gesetzt ist: com.zaxxer.hikari.HikariConfig.java öffentliche HikariConfig() { ... istAutoCommit = wahr; } Bei expliziten Transaktionen, die vom Transaktionsmanager PlatformTransactionManager verwaltet werden (z. B. @Transactional-Annotationsdeklarationen), wird der Auto-Commit-Modus beim Öffnen der Transaktion deaktiviert. Der Code lautet wie folgt: @Überschreiben geschützt void doBegin(Objekttransaktion, Transaktionsdefinitionsdefinition) { DataSourceTransactionObject txObject = (DataSourceTransactionObject) Transaktion; Verbindung con = null; versuchen { ........ // Wechseln Sie bei Bedarf zum manuellen Commit. Dies ist bei einigen JDBC-Treibern sehr aufwändig. // wir wollen es also nicht unnötig tun (wenn wir zum Beispiel explizit // der Verbindungspool wurde bereits so konfiguriert, dass er festgelegt wird). wenn (con.getAutoCommit()) { txObject.setMustRestoreAutoCommit(true); wenn (logger.isDebugEnabled()) { logger.debug("JDBC-Verbindung [" + con + "] auf manuelles Commit umstellen"); } //Auto-Commit-Modus ausschalten con.setAutoCommit(false); } ....... } fangen (Wurfbeispiel) { ....... } } ZusammenfassenDer Autocommit-Modus von MySQL ist standardmäßig aktiviert. Um Fehler durch manuelle DML-Operationen zu vermeiden, kann die Produktionsumgebung auf den standardmäßigen geschlossenen Zustand gesetzt werden. Im Allgemeinen sind JDBC-Verbindungspools standardmäßig aktiviert und konfigurierbar. Bei einer expliziten Transaktion wird es auf den Status „Geschlossen“ gesetzt. Eine einfache Änderung des Autocommits der Datenbankumgebung hat keine Auswirkungen auf das Verhalten des Codes. Oben finden Sie eine ausführliche Erläuterung zu MySQL und Springs Autocommit. Weitere Informationen zu MySQL Autocommit finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: XHTML-Tutorial für den Einstieg: Häufig verwendete XHTML-Tags
Inhaltsverzeichnis Der erste Der Zweite Native Js...
Als ich das erste Mal anfing, fand ich viele Fehl...
Inhaltsverzeichnis Problembeschreibung Was ist di...
Inhaltsverzeichnis Die Rolle von cloneElement Anw...
Wirkung: Code: <Vorlage> <div Klasse=&qu...
1. Der Unterschied zwischen HTTP und HTTPS HTTP: ...
Ich bin kürzlich auf einen Fehler gestoßen, als i...
Nach der offiziellen Veröffentlichung von Activit...
Vorwort Im Falle eines Primärschlüsselkonflikts o...
Wie lädt man das JAR-Paket in ein privates Lager ...
Inhaltsverzeichnis 1. Constraint-Konzepte und Kla...
Erstellen Sie einen Benutzer: Erstellen Sie den B...
Inhaltsverzeichnis Vorwort 1. Anspruch und Wirkun...
Vor Kurzem habe ich gelernt, React mit Three.js z...
Vorwort Normale Benutzer definieren geplante Cron...