元記事の場合、転載の際は元記事の出典を明記してください
この記事のブログアドレス: https: //hpzwl.blog.csdn.net/article/details/130381428
Qt 開発コラム: サードパーティー製ライブラリ開発技術
序文
mysql ドライバーのバージョン msvc2015x32 を調整しました. mysql mingw32 ドライバーの以前のバージョンはコンパイルおよびテスト済みです. 一部の 3 つのライブラリは少なくとも vs2017 をサポートしているため、Qt5.9.3 ベースの msvc2017x64 のみを使用できます. msvc2017x64 バージョンの mysql ドライバー. 現在の特定のニーズを満たすには、このプロセスは少し面倒です. Qt のバージョンが Qt5.12 よりも古い可能性があるため、引き続き遠慮なく共有してください.
この記事では、主に Qt5.9.3 msvc2017x64 + mysql8.0.16 のドライバー コンパイル プロセスについて説明します。
関連ブログ
" Qt+MySql 開発ノート: Qt5.9.3 の mingw32 バージョンは MySql8 バージョンのドライバーをコンパイルし、デモはデータベース テストに接続
します"
" MySql 開発ノート: MySql データベース サービスの構築とテーブル構築スクリプト
のインポート次元マップ、時間制限制御、パラメータデバッグなど)」
事例共有:Qt建設機械真空レーザー溶接システムソフトウェア製品カスタマイズ(Siemens PLC、mysqlデータベース、ユーザー権限制御、インターフェース構成、パラメータカスタマイズ、プレーヤー、二次元アイコン、RGVカー、デッドライン制御、パラメータデバッグなど)》
コンパイラ環境
Qt5.9.3 msvc2017x64
インストールするときは、ソースコードを確認することを忘れないでください
mysql-installer-community-8.0.16.0
データベースをダウンロード
https://downloads.mysql.com/archives/community/
mysql ドライバ ライブラリのコンパイル (Qt5.9.3+mysql8.0.16)
ステップ 1: Qt5.9.3 をインストールし、msvc2017x64 のバージョンを確認します。
その他の工程は省略します。
ステップ 2: データベースの 64 ビット ドライバーをダウンロードしてプログラムを実行し、解凍する
データベース ランタイム パッケージ ファイルをダウンロードします。(注: ターゲット マシンにインストールされているバージョンと一致している必要があります)。
ダウンロードアドレス: https://dev.mysql.com/downloads/connector/cpp
(こちらの「ピット 1 に入る」を参照) は
直接ダウンロードをスキップしました, ダウンロードされた現在のコンパイルに問題があるため.
データベースは直接ローカルにインストールされます.ローカルアップ:
ステップ 3: qt に付属の mysql ソース コード プロジェクトを開く
QtCreatorで開く
ここでは、影を削除する必要があります。そうしないと、他のエラーが発生します。「ピット 1」と「ピット 2」を参照してください。
ステップ 4: qmake とビルド build
(ここでエラーを報告した場合は、戻って手順 3 を確認し、ピット 1 または 2 に入ります)
ステップ 5: プラグインの mysql ライブラリを置き換える
ステップ 6: データベースの libmysql.dll を bin ディレクトリにコピーする
mysql lib 配下の libmysql.dll を qt の msvc2017x64 の bin ディレクトリにコピーし、パッケージング時に持参してください。
ここでは、以前の lib に対応する libmysql.dll を qt の bin およびアプリケーション展開フォルダーに直接コピーします。
(PS: windeployqt は、パッケージ化およびリリース時にアクティブにコピーされません。手動でコピーする必要があります)
ステップ 7: アプリケーション接続テストをコンパイルする
アプリケーションを odbc から mysql ドライバーに切り替えて、データベース プロジェクトをコンパイルします:
これは、mysql8 が暗号化方法を変更したためです. mysql ドライバーを直接使用する場合は、暗号化方法を変更する必要があります. 変更方法は、主にデータベースをデプロイするときです.データベースにログインして、次の操作を実行できます。
次に、ログインテストを適用します
リモート ログインが引き続き必要な場合は、手順 8 と 9 に進みます。
ステップ 8: リモート操作を許可するようにデータベース アカウントを構成します (このステップは mingw32 の前のテスト ステップです。便宜上、ここに記載します)。
これは、アカウントがリモート ログインを許可されていないためです。そのため、リモート ログインを許可するようにデータベース ユーザーの構成を変更する必要があります。
リモートでログインできるようにユーザーを変更するには、まず mysql 制御端末を使用してログインするためのパスワードを入力し、次の操作を行います
。
use mysql;
select host,host from user;
update user set host = ‘%’ where user = ‘root’;
select host,host from user;
現時点ではまだ機能しません。以下を強制的に更新する必要があります
flush privileges;
その後、成功:
ここまでで、Qt5.9.3 msvc2017x64 + mysql8.0.16 データベース接続ドライバーがコンパイルされました。
ステップ 9: データベースのリモート操作ツールに接続します (このステップは前の mingw32 のテスト ステップです。便宜上、ここに直接入れます)
リモート ツールを使用してテストし、エラーを見つけます:
これは、mysql が 8.0 以降にパスワード暗号化規則を変更したためです. 現在のクライアント接続ソフトウェアは、Mysql8 によって追加された新しい暗号化方法 caching_sha2_password をサポートしていないため、ユーザーの暗号化方法を変更し、古い暗号化認証方式に戻してください。
最初に mysql コマンド ラインにログインし、次を実行して、主に youPassword をリモート ログインに使用するアカウント パスワードに置き換えます。
alter user 'root'@'%' identified by 'youPassword' password expire never;
alter user root identified with mysql_native_password by 'youPassword';
flush privileges;
ピットに
ピット 1: コンパイル エラーを開くことができません「入力ファイル "D:\mysql-connector-c-6.1.11-winx64\lib.ob" を開けません」
質問
コンパイル エラー、パスできません
解決しようとする
提供されたライブラリのバージョンをターゲットとするマルチパーティ検索も機能しません。
今回のバージョンで、ようやくmysqlのインストールフォルダから直接取得しようとしたところ、パスしたのですが、ルートに記録されているファイルが見当たりませんでした(後でパスを調べてみると、ルートディレクトリに生成されていないことが確認されました) )。
次のスクリーンショット プロセスは、次を参照できます。
次に、影を削除して成功します。
解決
shaodw を削除し、「ピットへの進入 2 」 でパスを確認します。
エントリ 2: コンパイル出力なし
質問
以前の mingw32 に従ってコンパイルすると、出力が見つかりませんでした
理由
いくつかの構成ファイルがあるので、それらをすべて直接ビルドして、生成されたフォルダーを表示します
パスの問題であることが判明しました。
解決
対応するパスを見つけて生成します。
1 と 2 を合わせて、コンパイラ vc バージョンのドライバー ライブラリをダウンロードしようとする問題もあり、さまざまな問題を試し、調査し、徐々に解消するのにほぼ半日かかりました。
元記事の場合、転載の際は元記事の出典を明記してください
この記事のブログアドレス: https: //hpzwl.blog.csdn.net/article/details/130381428