Als ich jedoch versuchte, eine Verbindung zu MySQL 8.0 herzustellen< /code>-Datenbank erhalte ich den folgenden Fehler:
Code: Select all
gateway | thread 'main' panicked at src/db/setup.rs:25:10:
gateway | Failed to create DB Pool: Error(Some("Plugin caching_sha2_password could not be loaded: Dynamic loading not supported"))
gateway | note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Die Docker-Datei für die Anwendung verwendet musl für die statische Verknüpfung. Hier ist der relevante Teil meiner Docker-Datei:
Code: Select all
FROM messense/rust-musl-cross:${BUILD_PLATFORM}-musl AS builder
...
# Manually compile MariaDB client library for musl
WORKDIR /tmp
RUN curl -LO https://downloads.mariadb.com/Connectors/c/connector-c-3.3.4/mariadb-connector-c-3.3.4-src.tar.gz
RUN tar xzf mariadb-connector-c-3.3.4-src.tar.gz
RUN mkdir build
WORKDIR /tmp/build
RUN sed 's/STRING(STRIP ${extra_dynamic_LDFLAGS} extra_dynamic_LDFLAGS)//' -i ../mariadb-connector-c-3.3.4-src/mariadb_config/CMakeLists.txt
RUN sed 's/LIST(REMOVE_DUPLICATES extra_dynamic_LDFLAGS)//' -i ../mariadb-connector-c-3.3.4-src/mariadb_config/CMakeLists.txt
RUN CC=aarch64-unknown-linux-musl-gcc \
LDFLAGS=-L/usr/local/musl/lib \
cmake \
-DWITH_SSL=OPENSSL \
-DWITH_TLS=OPENSSL \
-DOPENSSL_ROOT_DIR=/usr/local/musl \
-DOPENSSL_USE_STATIC_LIBS=1 \
-DWITH_CURL=0 \
../mariadb-connector-c-3.3.4-src
RUN make mariadbclient
RUN cp libmariadb/libmariadbclient.a /usr/local/musl/lib/libmysqlclient.a
...
Ich habe mariadbclient manuell mit statischer Verknüpfung kompiliert, wie in der Docker-Datei gezeigt.
Es wurde bestätigt, dass die kompilierte Binärdatei erfolgreich ausgeführt wird, mit Ausnahme dieses Datenbankverbindungsproblems.
Wie kann ich den Plugin-Fehler „caching_sha2_password“ beheben, wenn ich Diesel mit MySQL verwende und eine statisch verknüpfte Rust-Binärdatei erstellt habe? mit Mus? Gibt es eine Möglichkeit, die Kompatibilität mit MySQL 8.0 sicherzustellen, oder muss ich etwas an meinem Setup ändern, damit das Plugin funktioniert?
Jede Anleitung oder Anregung ist sehr willkommen!