Gespeicherte Prozeduren und Codierung Wenn in gespeicherten MySQL-Prozeduren die Kodierung der Tabelle und der Daten von der Standardkodierung der Datenbank und der gespeicherten Prozeduren abweicht, kann SQL den Index möglicherweise nicht verwenden, da MySQL eine entsprechende Kodierungskonvertierung für die Daten in der Bedingungsspalte durchführt. Im Folgenden sind die Tabellendaten beispielsweise latin1, und der MySQL-Parser führt einige Konvertierungen durch: ... WHERE Namensspalte = NAME_CONST('in_Namensspalte',_utf8'MP201022' COLLATE 'utf8_general_ci') Sie können die entsprechende Kodierungskonvertierung in der gespeicherten Prozedur durchführen (normalerweise das varchar/char-Feld ändern), sodass der Index normal verwendet werden kann. Weitere Informationen finden Sie unter: mysql-slow-when-run-as-stored-proc ... WHERE namecolumn = convert(in_namecolumn using latin1) collate latin1_swedish_ci JDBC-Direktverbindung zum Ausführen von SQL Wenn beim Ausführen von SQL über eine JDBC-Verbindung die Kodierung inkonsistent ist, müssen auch die Typen varchar und char konvertiert werden, wie unten gezeigt: ... WHERE namecolumn = convert(in_namecolumn using latin1) collate latin1_swedish_ci Andernfalls können die folgenden Fehler aufgrund von Kodierungsinkonsistenzen auftreten (je nach MySQL-Connector-Version kann das Verhalten variieren): SQL-Status [HY000]: Fehlercode [1267]: Unzulässige Mischung von Sortierungen (latin1_swedish_ci,IMPLICIT) und (utf8mb4_general_ci,COERCIBLE) für Operation '=' Änderungen am JDBC-UseSSL-Parameter In der mysql-connector-java-Konfiguration weist der Parameter useSSL die folgenden Unterschiede auf. Ab 5.1.38 ist useSSL standardmäßig für MySQL 5.5.45+, 5.6.26+ oder 5.7.6+ aktiviert. Die entsprechenden Parameter requireSSL und verifyServerCertificate werden ebenfalls aktiviert: < 5.1.38: ConnectionProperties.useSSL=SSL bei der Kommunikation mit dem Server verwenden (true/false), Standardeinstellung ist „false“ >= 5.1.38 ConnectionProperties.useSSL=SSL bei der Kommunikation mit dem Server verwenden (true/false), Standard ist „true“ bei einer Verbindung mit MySQL 5.5.45+, 5.6.26+ oder 5.7.6+, andernfalls ist der Standard „false“ MySQL 5.7.x und höher aktivieren SSL standardmäßig und der Client verhandelt automatisch die Verschlüsselung beim Herstellen einer Verbindung, sofern nicht ausdrücklich angegeben wurde, dass keine Verschlüsselung erfolgen soll. mysql-connector-java hat useSSL seit 5.1.38 standardmäßig aktiviert. Daher treten beim Herstellen einer Verbindung zu MySQL 5.7.x mit einer niedrigeren JDBC-Version keine Verschlüsselungsprobleme auf, jedoch beim Herstellen einer Verbindung zu 5.7.6+ mit einer höheren JDBC-Version. Sie müssen useSSL=false ausdrücklich angeben und beim Herstellen einer Verbindung zu MySQL 5.5, 5.6 mit einer höheren JDBC-Version treten keine Verschlüsselungsprobleme auf. Dies ist das Ende dieses Artikels über einige Probleme, die durch inkonsistente MySQL-Kodierung verursacht werden können. Weitere Informationen zu Problemen, die durch inkonsistente MySQL-Kodierung verursacht werden, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Mehrere Situationen, in denen Div durch Iframe abgedeckt ist, und ihre Lösungen
Konfigurieren Sie zunächst die Projektartefakte K...
1. Ein-Klick-Installation des Mysql-Skripts [root...
Inhaltsverzeichnis Einführung in den NFS-Dienst W...
Weiterführende Literatur: MySQL8.0.20-Installatio...
1. Einleitung Die Standortanweisung ist die Kernk...
Während der Projektentwicklung bin ich gestern auf...
Es gibt eine andere Baumstruktur Javascript-Objek...
Overlay-Netzwerkanalyse Die integrierte netzwerkü...
Systemumgebung: Redis-Version: 6.0.8 Docker-Versi...
In diesem Artikel wird der spezifische Code von v...
Dieser Artikel veranschaulicht anhand eines Beisp...
Vorwort In Bezug auf die Verwendung von MySQL-Ind...
Beim Installieren von Paketen auf einem Ubuntu-Se...
Inhaltsverzeichnis 1. Wo ist die Langsamkeit? 2. ...
Heute habe ich gelernt, MySQL zu installieren. Da...