Die Klasse, die java.sql.Driver in MySQL Connector/J
implementiert, heißt com.mysql.jdbc.Driver
.
Der Klassenname org.gjt.mm.mysql.Driver
eignet sich auch, um die Abwärtskompatibilität mit MM.MySQL zu
bewahren. Verwenden Sie also diesen Klassennamen, wenn Sie den
Treiber registrieren oder andere Software konfigurieren, die
MySQL Connector/J benutzen soll.
Es folgt das JDBC-URL-Format für MySQL Connector/J, wobei die Elemente in den eckigen Klammern ([, ]) optional sind:
jdbc:mysql://[host][,failoverhost...][:port]/[database] » [?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
Ist kein Hostname angegeben, wird der Standardwert 127.0.0.1 verwendet. Fehlt die Port-Angabe, wird 3306, die Standard-Portnummer für MySQL-Server eingesetzt.
jdbc:mysql://[host:port],[host:port].../[database] » [?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...
Wenn die Datenbank nicht angegeben ist, wird keine Verbindung
mit einer Standarddatenbank aufgenommen. Sie müssen dann
entweder die Methode setCatalog()
auf dem
Connection-Objekt aufrufen, oder in der SQL-Anweisung
Tabellennamen mit dem Datenbanknamen vollständig qualifizieren
(d.h. SELECT dbname.tablename.colname FROM
dbname.tablename...
). Bei der Verbindung keine
Datenbank anzugeben ist jedoch normalerweise nur dann sinnvoll,
wenn Sie Tools erstellen, die mit mehreren Datenbanken arbeiten
sollen, wie beispielsweise GUI-Datenbankmanager.
MySQL Connector/J unterstützt Ausfallsicherungen. So kann der
Treiber auf beliebig viele Slave-Hosts zurückgreifen und immer
noch nur-lesende Anfragen ausführen. Die Ausfallsicherung tritt
nur dann in Kraft, wenn für die Verbindung
autoCommit(true)
gilt, da bei laufenden
Transaktionen kein zuverlässiges Umschalten möglich ist. Die
meisten Anwendungsserver und Verbindungspools setzen
autoCommit
am Ende jeder
Transaktion/Verbindungsnutzung auf true
.
Die Ausfallsicherung verhält sich folgendermaßen:
Wenn die URL-Eigenschaft autoReconnect false ist, wird nur bei der Initialisierung einer Verbindung auf den Sekundär-Host umgeschaltet (sog. Failover), und auf den Primär-Host wird wieder zurückgeschaltet (sog. Failback), wenn der Treiber feststellt, dass dieser wieder zur Verfügung steht.
Wenn die URL-Eigenschaft autoReconnect
true ist, wird auf den Sekundär-Host umgeschaltet, wenn der
Treiber feststellt, das die Verbindung (vor der Ausführung
jeglicher Anfrage) gescheitert ist, und
wieder auf den Primär-Host zurückgeschaltet, wenn dieser
wieder verfügbar ist (nach der Ausführung von
queriesBeforeRetryMaster
-Anfragen).
In beiden Fällen gilt: Wenn Sie mit einem "Sekundär"-Server verbunden sind, wird die Verbindung in einen nur-lesenden Zustand versetzt, sodass Anfragen, die Daten modifizieren würden, Ausnahmen auslösen (eine solche Anfrage wird niemals vom MySQL-Server verarbeitet).
Wie Connector/J eine Verbindung zu einem MySQL-Server einrichtet, ist in den Konfigurationseigenschaften definiert. Wenn nichts anderes gesagt wird, können die Eigenschaften für ein DataSource- oder für ein Connection-Objekt gesetzt werden.
Konfigurationseigenschaften können auf folgende Weisen eingestellt werden:
Mit den set*()-Methoden von MySQL-Implementierungen auf java.sql.DataSource (die bevorzugte Methode, wenn Implementierungen von java.sql.DataSource verwendet werden):
com.mysql.jdbc.jdbc2.optional.MysqlDataSource
com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
Als Schlüssel/Wert-Paar in der
java.util.Properties-Instanz, die an
DriverManager.getConnection()
oder
Driver.connect()
übergeben wird.
Als JDBC-URL-Parameter in dem an
java.sql.DriverManager.getConnection()
,
java.sql.Driver.connect()
oder
MySQL-Implementierungen der
setURL()
-Methode von
javax.sql.DataSource
übergebenen URL.
Hinweis. Wenn Sie zur Konfiguration eines JDBC-URLs einen XML-Mechanismus verwenden, müssen sie den XML-Zeichenliteral & auf andere Konfigurationsparameter einstellen, da das Ampersand in XML ein reserviertes Zeichen ist.
Die Eigenschaften werden in den folgenden Tabellen aufgeführt.
Verbindung/Authentifizierung.
Name der Eigenschaft | Definition | Standardwert | Seit Version |
user | Der Benutzername für die Verbindung | alle | |
password | Das Passwort für die Verbindung | alle | |
socketFactory | Der Name der Klasse, die der Treiber zur Einrichtung von
Socket-Verbindungen zum Server benutzen soll. Diese
Klasse muss die Schnittstelle
com.mysql.jdbc.SocketFactory
implementieren und einen öffentlichen,
parameterlosen Konstruktor haben. |
com.mysql.jdbc.StandardSocketFactory | 3.0.3 |
connectTimeout | Timeout für Socket-Verbindung (in Millisekunden). 0 bedeutet: kein Timeout. Funktioniert nur mit JDK-1.4 oder höher. Standardwert ist 0. | 0 | 3.0.1 |
socketTimeout | Timeout für Socket-Operationen im Netzwerk. (Die Standardeinstellung 0 bedeutet: kein Timeout). | 0 | 3.0.1 |
useConfigs | Lade die kommagetrennte Liste der Konfigurationseigenschaften vor dem Parsen des URLs oder der Anwendung benutzerdefinierter Eigenschaften. Siehe Abschnitt 25.3.4.1, „Driver/Datasource-Klassennamen, URL-Syntax und Konfigurationseigenschaften für Connector/J“ | 3.1.5 | |
interactiveClient | Setzt das Flag CLIENT_INTERACTIVE, damit MySQL das Verbindungs-Timeout gemäß INTERACTIVE_TIMEOUT anstelle von WAIT_TIMEOUT einstellt | false | 3.1.0 |
propertiesTransform | Eine Implementierung von
com.mysql.jdbc.ConnectionPropertiesTransform ,
die der Treiber benutzt, um an ihn übergebene
URL-Eigenschaften zu modifizieren, ehe er versucht,
eine Verbindung einzurichten |
3.1.4 | |
useCompression | Verwendung von zlib-Kompression zur Kommunikation mit dem Server
(true/false)? Standardwert ist
false . |
false | 3.0.17 |
Hochverfügbarkeit und Clustering.
Name der Eigenschaft | Definition | Standardwert | Seit Version |
autoReconnect | Sollte der Treiber alte und/oder tote Verbindungen wiederbeleben oder nicht? Wenn diese Eigenschaft aktiviert ist, löst der Treiber eine Ausnahme aus, wenn Anfragen, die zur laufenden Transaktion gehören, über eine alte oder tote Verbindung gesendet werden. Werden über die Verbindung jedoch Anfragen gesendet, die zu einer neuen Transaktion gehören, versucht der Server vor der nächsten Anfrage eine Neuverbindung. Von der Verwendung dieses Features wird abgeraten, da es Auswirkungen auf den Session-Zustand und die Datenkonsistenz hat, wenn Anwendungen nicht richtig mit SQLExceptions umgehen können. Es sollte nur verwendet werden, wenn die Anwendung nicht richtig konfiguriert werden kann, um SQLExceptions, die aus alten oder toten Verbindungen resultieren, richtig zu handhaben. Als Alternative können Sie eventuell die MySQL-Server-Variable "wait_timeout" auf einen höheren als den Standardwert von 8 Stunden setzen. | false | 1.1 |
autoReconnectForPools | Verwendung einer Neuverbindungsstrategie, die sich für Verbindungspools eignet (Standardwert ist 'false') | false | 3.1.3 |
failOverReadOnly | Soll die Verbindung 'read-only' gesetzt werden, wenn im autoReconnect-Modus ein Ausfall passiert? | true | 3.0.12 |
reconnectAtTxEnd | Soll der Treiber am Ende jeder Transaktion eine Neuverbindung versuchen, wenn autoReconnect auf true gesetzt ist? | false | 3.0.10 |
roundRobinLoadBalance | Sollen Verbindungs-Hosts round-robin ausgewählt werden, wenn autoReconnect eingeschaltet und failoverReadonly auf false gesetzt ist? | false | 3.1.2 |
queriesBeforeRetryMaster | Anzahl der Anfragen, die bei einem Ausfall (Failover) abgesetzt werden, ehe wieder auf den Master zurückgegriffen wird (bei Verwendung von Multi-Host-Failover). Die Bedingung, die zuerst erfüllt wird, ('queriesBeforeRetryMaster' oder 'secondsBeforeRetryMaster') veranlasst einen neuen Verbindungsversuch mit dem Master. Standardwert ist 50. | 50 | 3.0.2 |
secondsBeforeRetryMaster | Wie lange soll der Treiber bei einem Ausfall warten, ehe er wieder eine Verbindung zum Masterserver versucht? Die Bedingung, die zuerst erfüllt wird, ('queriesBeforeRetryMaster' oder 'secondsBeforeRetryMaster') veranlasst einen neuen Verbindungsversuch mit dem Master. Zeitangabe in Sekunden, Standardwert ist 30 | 30 | 3.0.2 |
resourceId | Ein global eindeutiger Bezeichner für die Ressource, mit welcher diese
Datenquelle oder Verbindung verbunden ist, wird für
XAResource.isSameRM() verwendet,
wenn der Treiber diesen Wert nicht anhand der
Hostnamen im URL ermitteln kann |
5.0.1 |
Sicherheit.
Name der Eigenschaft | Definition | Standardwert | Seit Version |
allowMultiQueries | Erlaubt das Trennzeichen' ;', um mehrere Anfragen in einer einzigen Anweisung abzugrenzen. (true/false, Standardwert ist 'false') | false | 3.1.1 |
useSSL | SSL wird zur Kommunikation mit dem Server eingesetzt (true/false), Standardwert ist 'false' | false | 3.0.2 |
requireSSL | Wird SSL-Verbindung verlangt, wenn useSSL=true? (Standardwert ist 'false'). | false | 3.1.0 |
allowUrlInLocalInfile | Soll der Treiber URLs in 'LOAD DATA LOCAL INFILE'-Anweisungen zulassen? | false | 3.1.4 |
paranoid | Maßnahmen ergreifen, damit keine schutzwürdigen Informationen in Fehlermeldungen erscheinen und Datenstrukturen, die schutzwürdige Daten enthalten, nach Möglichkeit löschen? (Standardwert ist 'false') | false | 3.0.1 |
Performance-Erweiterungen.
Name der Eigenschaft | Definition | Standardwert | Seit Version |
metadataCacheSize | Die Anzahl der Anfragen, für die cacheResultSetMetadata eintritt, wenn cacheResultSetMetaData auf 'true' gesetzt ist (Standardwert 50) | 50 | 3.1.1 |
prepStmtCacheSize | Wie viele vorbereitete Anweisungen sollen gespeichert werden, wenn Caching von vorbereiteten Anweisungen eingeschaltet ist? | 25 | 3.0.10 |
prepStmtCacheSqlLimit | Wie lang darf eine SQL-Anweisung, deren Parse-Ergebnis der Treiber speichert, höchstens sein, wenn Caching von vorbereiteten Anweisungen eingeschaltet ist? | 256 | 3.0.10 |
useCursorFetch | Wenn bei einer Anweisung MySQL > 5.0.2 und
setFetchSize() > 0 gilt, soll
diese Anweisung Zeilen mit Cursor-Fetching abholen? |
false | 5.0.0 |
blobSendChunkSize | Datenblöcke dieser Größe verwenden, wenn BLOB/CLOBs mit ServerPreparedStatements verschickt werden | 1048576 | 3.1.9 |
cacheCallableStmts | Soll der Treiber das Parsing-Stadium von CallableStatements cachen? | false | 3.1.2 |
cachePrepStmts | Soll der Treiber das Parsing-Stadium von PreparedStatements von clientseitigen vorbereiteten Anweisungen sowie die Eignungsprüfung von serverseitigen vorbereiteten Anweisungen und die serverseitigen vorbereiteten Anweisungen selbst cachen? | false | 3.0.10 |
cacheResultSetMetadata | Soll der Treiber ResultSetMetaData für Statements und PreparedStatements cachen? (JDK-1.4+ erforderlich, true/false, Standardwert 'false') | false | 3.1.1 |
cacheServerConfiguration | Soll der Treiber die Ergebnisse von SHOW VARIABLES
und SHOW COLLATION pro URL
cachen? |
false | 3.1.5 |
defaultFetchSize | Der Treiber ruft setFetchSize(n) mit diesem Wert auf allen neu erstellten Anweisungen auf | 0 | 3.1.9 |
dontTrackOpenResources | Laut JDBC-Spezifikation muss der Treiber automatisch Ressourcen
verfolgen und schließen, doch wenn Ihre Anwendung
nicht gut darin ist, explizit
close() auf Anweisungen oder
Ergebnismengen aufzurufen, kann dies zu
Speicherverlust führen. Wenn Sie diese Eigenschaft
auf true setzen, lockern Sie diese Einschränkung
und erhöhen für bestimmte Anwendungen die
Speichereffizienz |
false | 3.1.7 |
dynamicCalendars | Soll der Treiber den Standardkalender abrufen, oder ihn pro Verbindung/Session cachen? | false | 3.1.5 |
elideSetAutoCommits | Für MySQL-4.1 oder neuer: Soll der Treiber 'set autocommit=n'-Anfragen
nur absetzen, wenn der Server-Zustand nicht dem
durch
Connection.setAutoCommit(boolean)
geforderten Zustand entspricht? |
false | 3.1.3 |
holdResultsOpenOverStatementClose | Soll der Treiber bei Statement.close() Ergebnismengen
abschließen, wie es die JDBC-Spezifikation fordert? |
false | 3.1.7 |
locatorFetchBufferSize | Wenn 'emulateLocators' auf 'true' gesetzt ist: Wie groß soll der Puffer sein, wenn BLOB-Daten für einen getBinaryInputStream abgeholt werden? | 1048576 | 3.2.1 |
rewriteBatchedStatements | Soll der Treiber Multiqueries verwenden (unabhängig von der Einstellung
von allowMultiQueries ) und
vorbereitete INSERT -Anweisungen
in Insert-Operationen mit mehreren Werten
umformulieren, wenn executeBatch() aufgerufen wird?
Beachten Sie, dass dies die Gefahr von SQL-Injection
birgt, wenn Sie einfache java.sql.Statements
verwenden und Ihr Code die Eingabewerte nicht
richtig säubert. Für vorbereitete Anweisungen
müssen Sie wissen, dass serverseitige vorbereitete
Anweisungen gegenwärtig noch nicht von dieser
Umformulierungsoption Gebrauch machen können. Wenn
Sie PreparedStatement.set*Stream() ohne Angabe von
Stream-Längen verwenden, kann darüber hinaus der
Treiber die optimale Anzahl der Parameter pro Batch
nicht ermitteln und meldet einen Fehler, dass das
resultierende Paket zu groß wird.
Statement.getGeneratedKeys() funktioniert für diese
umformulierten Anweisungen nur dann, wenn der
gesamte Batch INSERT-Anweisungen enthält. |
false | 3.1.13 |
useFastIntParsing | Interne String->Integer-Konvertierungsroutinen verwenden, damit nicht zu viele Objekte angelegt werden? | true | 3.1.4 |
useJvmCharsetConverters | Immer die in der JVM integrierten Zeichencodierungsroutinen verwenden, anstatt Lookup-Tabellen für Single-Byte-Zeichensätze zu benutzen? (Der Standardwert "true" ist für neuere JVMs geeignet) | true | 5.0.1 |
useLocalSessionState | Soll der Treiber die internen Werte für Autocommit und Transaktionsisolation benutzen, die von Connection.setAutoCommit() und Connection.setTransactionIsolation() gesetzt werden, anstatt die Datenbank anzufragen? | false | 3.1.7 |
useReadAheadInput | Soll beim Lesen von Serverdaten der optimierte nicht-blockierende, gepufferte Eingabestrom verwendet werden? | true | 3.1.5 |
Debugging/Profiling.
Name der Eigenschaft | Definition | Standardwert | Seit Version |
logger | Name einer Klasse, die 'com.mysql.jdbc.log.Log' implementiert und zur Protokollierung von Nachrichten verwendet wird. (Standardwert ist 'com.mysql.jdbc.log.StandardLogger', eine Klasse, die in STDERR schreibt) | com.mysql.jdbc.log.StandardLogger | 3.1.1 |
profileSQL | Anfragen und ihre Ausführungs/Fetch-Zeiten werden im konfigurierten Logger verfolgt (true/false), Standardwert ist 'false' | false | 3.1.0 |
reportMetricsIntervalMillis | Wenn 'gatherPerfMetrics' aktiviert ist: In welchen Abständen sollen diese Daten gesammelt werden (in Millisekunden)? | 30000 | 3.1.2 |
maxQuerySizeToLog | Die maximale Länge einer Anfrage, die bei Profiling oder Tracing prokolliert wird | 2048 | 3.1.3 |
packetDebugBufferSize | Die Höchstzahl der Pakete, die gepuffert werden, wenn 'enablePacketDebug' true ist | 20 | 3.1.3 |
slowQueryThresholdMillis | Wenn 'logSlowQueries' eingeschaltet ist: Wie lange darf eine Anfrage (in ms) dauern, ehe sie als 'langsam' protokolliert wird? | 2000 | 3.1.2 |
useUsageAdvisor | Soll der Treiber ins Log 'usage'-Warnungen schreiben, um eine korrekte und effiziente Nutzung von JDBC und MySQL Connector/J anzuraten (true/false, Standardwert ist 'false')? | false | 3.1.1 |
autoGenerateTestcaseScript | Soll der Treiber ausgeführtes SQL einschließlich serverseitige vorbereitete Anweisungen in STDERR speichern? | false | 3.1.9 |
dumpMetadataOnColumnNotFound | Soll der Treiber feldbezogene Metadaten einer Ergebnismenge in die Ausnahmemeldung schreiben, wenn ResultSet.findColumn() fehlschlägt? | false | 3.1.13 |
dumpQueriesOnException | Soll der Treiber den Inhalt der an den Server gesandten Anfrage in der Meldung für SQLExceptions speichern? | false | 3.1.3 |
enablePacketDebug | Wenn dies eingeschaltet ist, wird ein Ring-Puffer mit 'packetDebugBufferSize'-Paketen behalten und gespeichert, sofern in bestimmten Bereichen des Treibercodes Ausnahmen ausgelöst werden | false | 3.1.3 |
explainSlowQueries | Wenn 'logSlowQueries' eingeschaltet ist: Soll der Treiber automatisch eine 'EXPLAIN'-Anweisung an den Server stellen und die Ergebnisse auf WARN-Level an das konfigurierte Log schicken? | false | 3.1.2 |
logSlowQueries | Sollen Anfragen protokolliert werden, die länger als 'slowQueryThresholdMillis' dauern? | false | 3.1.2 |
traceProtocol | Soll das Trace-Netzwerkprotokoll ins Log gespeichert werden? | false | 3.1.2 |
Verschiedenes.
Name der Eigenschaft | Definition | Standardwert | Seit Version |
useUnicode | Soll der Treiber zur Behandlung von Strings Unicode-Zeichencodes verwenden? Dies sollte nur eingesetzt werden, wenn der Treiber die Zeichensatzzuordnung nicht ermitteln kann, oder wenn Sie versuchen, dem Treiber einen Zeichensatz 'aufzuzwingen', den MySQL nicht nativ unterstützt (wie UTF-8). true/false, Standardwert ist 'true' | true | 1.1g |
characterEncoding | Wenn 'useUnicode' auf true gesetzt ist: Welche Zeichencodierung soll der Treiber für den Umgang mit Strings verwenden? (Standardwert ist 'autodetect') | 1.1g | |
characterSetResults | Mit diesem Zeichensatz soll der Server Ergebnismengen zurückgeben. | 3.0.13 | |
connectionCollation | Wenn dies gesetzt ist, verwendet der Server die mit 'set collation_connection' eingestellte Sortierreihenfolge für Zeichen | 3.0.13 | |
sessionVariables | Eine kommagetrennte Liste von Namen/Wert-Paaren, die als SET SESSION ... an den Server geschickt wird, wenn sich der Treiber verbindet | 3.1.8 | |
allowNanAndInf | Soll der Treiber NaN- oder +/- INF-Werte in PreparedStatement.setDouble() zulassen? | false | 3.1.5 |
autoClosePStmtStreams | Soll der Treiber automatisch .close() auf Streams/Readern aufrufen, die mit set*()-Methoden als Argumente übergeben wurden? | false | 3.1.12 |
autoDeserialize | Soll der Treiber in BLOB-Feldern gespeicherte Objekte automatisch erkennen und deserialisieren? | false | 3.1.5 |
capitalizeTypeNames | Sollen Typnamen in DatabaseMetaData groß geschrieben werden? (Ist normalerweise nur für WebObjects nützlich, true/false, Standardwert ist 'false') | false | 2.0.7 |
clobCharacterEncoding | Diese Zeichencodierung soll anstelle der für die Verbindung konfigurierten characterEncoding zum Senden und Abrufen von TEXT-, MEDIUMTEXT- und LONGTEXT-Werten verwendet werden. | 5.0.0 | |
clobberStreamingResults | Sorgt dafür, dass ein 'streaming'-ResultSet automatisch geschlossenwird, und dass anhängige Daten, die immer vom Server eintreffen, verworfen werden, wenn eine andere Anfrage ausgeführt wird, bevor alle Daten vom Server eingelesen worden sind. | false | 3.0.9 |
continueBatchOnError | Soll der Treiber weiterhin Batch-Befehle ausführen, wenn eine Anweisung gescheitert ist? Laut JDBC-Spezifikation sind beide Möglichkeiten erlaubt (Standardwert ist 'true'). | true | 3.0.3 |
createDatabaseIfNotExist | Legt die im URL angegebene Datenbank an, wenn sie noch nicht existiert, vorausgesetzt, der Benutzer hat die Berechtigung zum Anlegen von Datenbanken. | false | 3.1.9 |
emptyStringsConvertToZero | Soll der Treiber erlauben, dass leere String-Felder in '0'-Werte konvertiert werden? | true | 3.1.8 |
emulateLocators | N/A | false | 3.1.0 |
emulateUnsupportedPstmts | Soll der Treiber vorbereitete Anweisungen erkennen, die nicht vom Server unterstützt werden, und sie durch emulierte Versionen auf der Clientseite ersetzen? | true | 3.1.7 |
ignoreNonTxTables | Warnungen wegen nicht-transaktionssicherer Tabellen beim Rollback ignorieren? (Standardwert ist 'false'). | false | 3.0.9 |
jdbcCompliantTruncation | Soll der Treiber beim Kappen von Daten java.sql.DataTruncation-Ausnahmen auslösen, wie es die JDBC-Spezifikation verlangt, wenn er mit einem Server verbunden ist, der Warnungen unterstützt (MySQL 4.1.0 und neuer)? | true | 3.1.2 |
maxRows | So viele Zeilen werden maximal zurückgegeben (der Standardwert 0 bedeutet, dass alle Zeilen zurückgegeben werden). | -1 | alle Versionen |
noAccessToProcedureBodies | Soll der Treiber grundlegende Metadaten erstellen (alle Parameter werden als INOUT VARCHARs gemeldet), anstatt eine Ausnahme auszulösen, wenn er Prozedurparametertypen für CallableStatements ermitteln soll und der Benutzer nicht mit "SHOW CREATE PROCEDURE" auf die Prozdedurrümpfe zugreifen oder mysql.proc abfragen kann? | false | 5.0.3 |
noDatetimeStringSync | Nicht dafür sorgen, dass ResultSet.getDatetimeType().toString().equals(ResultSet.getString()) | false | 3.1.7 |
noTimezoneConversionForTimeType | TIME-Werte nicht auf die Server-Zeitzone umstellen, wenn 'useTimezone'='true' | false | 5.0.0 |
nullCatalogMeansCurrent | Wenn DatabaseMetadataMethods einen 'catalog'-Parameter abfragen, steht dann der Wert Null für den aktuellen Katalog? (Das ist zwar nicht JDBC-konform, entspricht aber dem Verhalten älterer Treiberversionen) | true | 3.1.8 |
nullNamePatternMatchesAll | Sollen DatabaseMetaData-Methoden, die *pattern-Parameter entgegennehmen, Null ebenso wie '%' behandeln (ist zwar nicht JDBC-konform, aber ältere Treiberversionen akzeptierten diese Abweichung von der Spezifikation) | true | 3.1.8 |
overrideSupportsIntegrityEnhancementFacility | Soll der Treiber für DatabaseMetaData.supportsIntegrityEnhancementFacility() auch dann "true" zurückgeben, wenn die Datenbank es nicht akzeptiert, um einen Workaround für Anwendungen (wie beispielsweise OpenOffice) zu ermöglichen, die verlangen, dass diese Methode "true" zurückgibt, um Unterstützung für Fremdschlüssel zu signalisieren, auch wenn die SQL-Spezifikation besagt, dass diese Facility noch viel mehr als nur Fremdschlüsselunterstützung umfasst? | false | 3.1.12 |
pedantic | Die JDBC-Spezifikation wortwörtlich befolgen | false | 3.0.0 |
pinGlobalTxToPhysicalConnection | Wenn XAConnections verwendet werden: Soll der Treiber gewährleisten, dass Operationen auf einer konkreten XID immer an dieselbe physikalische Verbindung weitergeleitet werden? So kann die XAConnection "XA START ... JOIN" auch nach dem Aufruf von "XA END" noch unterstützen. | false | 5.0.1 |
processEscapeCodesForPrepStmts | Soll der Treiber Escape-Codes in vorbereiteten Anweisungen verarbeiten? | true | 3.1.12 |
relaxAutoCommit | Wenn sich der Treiber mit einer MySQL-Version verbindet, die keine Transaktionen unterstützt: Sollen dennoch commit(), rollback() und setAutoCommit() erlaubt sein? (true/false, Standardwert ist 'false')? | false | 2.0.13 |
retainStatementAfterResultSetClose | Soll sich der Treiber die Statement-Referenz in einem ResultSet merken, nachdem ResultSet.close() aufgerufen wurde? Dies ist nach JDBC-4.0 nicht mehr JDBC-konform. | false | 3.1.11 |
rollbackOnPooledClose | Soll der Treiber rollback() aufrufen, wenn die logische Verbindung in einem Pool geschlossen wird? | true | 3.0.15 |
runningCTS13 | Ermöglicht Workarounds für Fehler in der JDBC Compliance Testsuite Version 1.3 von Sun | false | 3.1.7 |
serverTimezone | Überschreibt die Erkennung/Zuordnung der Zeitzone. Wird verwendet, wenn sich die Zeitzone des Servers nicht auf die Java-Zeitzone abbilden lässt. | 3.0.2 | |
strictFloatingPoint | Wird nur in älteren Versionen des Compliance Tests verwendet | false | 3.0.0 |
strictUpdates | Soll der Treiber eine strenge Prüfung (aller ausgewählten Primärschlüssel) aktualisierbarer Ergebnismenge vornehmen? (true, false, Standardwert ist 'true') | true | 3.0.4 |
tinyInt1isBit | Soll der Treiber den Datentyp TINYINT(1) als BIT-Typ behandeln (da der Server insgeheim sowieso eine BIT -> TINYINT(1)-Konvertierung vornimmt, wenn er Tabellen anlegt)? | true | 3.0.16 |
transformedBitIsBoolean | Wenn der Treiber TINYINT(1) in einen anderen Datentyp konvertiert: Soll er BOOLEAN anstelle von BIT verwenden (dient der zukünftigen Kompatibilität mit MySQL-5.0, da MySQL-5.0 einen BIT-Typ hat)? | false | 3.1.9 |
ultraDevHack | Wenn nötig PreparedStatements für prepareCall() erstellen, da UltraDev nicht funktioniert und prepareCall() für alle Anweisungen aufruft? (true/false, Standardwert ist 'false') | false | 2.0.3 |
useGmtMillisForDatetimes | Konvertiert zwischen Session-Zeitzone und GMT vor der Erzeugung von Date- und Timestamp-Objekten ("false" ist veraltetes Verhalten, "true" ist eher JDBC-konform). | false | 3.1.12 |
useHostsInPrivileges | Den Benutzern in DatabaseMetaData.getColumn/TablePrivileges() einen '@hostname' hinzufügen (true/false), Standardwert ist 'true'. | true | 3.0.2 |
useInformationSchema | Soll der Treiber bei Verbindung mit MySQL-5.0.7 oder neuer die von DatabaseMetaData benötigten Informationen aus dem INFORMATION_SCHEMA ableiten? | false | 5.0.0 |
useJDBCCompliantTimezoneShift | Soll der Treiber sich beim Konvertieren der Zeitzoneninformationen von TIME/TIMESTAMP/DATETIME-Werten für JDBC-Argumente, die ein java.util.Calendar-Argument nehmen an den JDBC-Standard halten? (Achtung, diese Option und die Konfigurationsoption "useTimezone=true" schließen sich gegenseitig aus.) | false | 5.0.0 |
useOldUTF8Behavior | Stellt das alte UTF-8-Verhalten ein, das der Treiber bei Kommunikation mit 4.0 und älteren Servern an den Tag legt. | false | 3.1.6 |
useOnlyServerErrorMessages | Keine 'Standard'-SQLState-Fehlermeldungen den vom Server zurückgelieferten Fehlermeldungen voranstellen. | true | 3.0.15 |
useServerPrepStmts | Serverseitige vorbereitete Anweisungen verwenden, wenn der Server sie unterstützt? (Standardwert ist 'true'). | true | 3.1.0 |
useSqlStateCodes | Zustandscodes gemäß SQL-Standard anstelle der 'alten' X/Open/SQL-Zustandscodes verwenden? (true/false), Standardwert ist 'true' | true | 3.1.3 |
useStreamLengthsInPrepStmts | StreamLength-Parameter in Aufrufen der PreparedStatement/ResultSet.setXXXStream()-Methode berücksichtigen? (true/false, Standardwert ist 'true') | true | 3.0.2 |
useTimezone | Datums/Uhrzeittypen zwischen Client- und Server-Zeitzone konvertieren (true/false, Standardwert ist 'false')? | false | 3.0.2 |
useUnbufferedInput | Keinen BufferedInputStream zum Lesen von Daten auf dem Server verwenden | true | 3.0.11 |
yearIsDateType | Soll der JDBC-Treiber den MySQL-Typ "YEAR" als java.sql.Date oder als SHORT behandeln? | true | 3.1.9 |
zeroDateTimeBehavior | Was soll geschehen, wenn der Server auf DATETIME-Werte trifft, die ausschließlich aus Nullen bestehen (so stellt MySQL ungültige Datumswerte dar)? Zulässige Werte sind 'exception', 'round' und 'convertToNull'. | exception | 3.1.4 |
Connector/J bietet auch MySQL-Zugriff über Named Pipes für
Windows NT/2000/XP. Hierzu wird die
NamedPipeSocketFactory als
Plugin-Socket-Factory mithilfe der Eigenschaft
socketFactory eingestellt. Wenn Sie keine
namedPipePath-Eigenschaft einstellen, wird
standardmäßig '\\.\pipe\MySQL' benutzt. Verwenden Sie die
NamedPipeSocketFactory
, so werden der
Hostname und die Port-Nummer im JDBC-URL ignoriert. Sie können
dieses Feature wie folgt einschalten:
socketFactory=com.mysql.jdbc.NamedPipeSocketFactory
Named Pipes funktinieren nur, wenn Sie sich mit dem MySQL-Server auf demselben Computer verbinden, auf dem auch der JDBC-Treiber eingesetzt wird. In einfachen Performance-Tests sieht es so aus, als sei der Zugriff über Named Pipes um 30%-50% schneller als der traditionelle TCP/IP-Zugriff.
Mit dem Beispielcode in
com.mysql.jdbc.NamedPipeSocketFactory
oder com.mysql.jdbc.StandardSocketFactory
können Sie eigene Socket-Factories bauen.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.