Qt+MySql 開発ノート: Qt5.9.3 msvc2017x64 バージョンは MySql8.0.16 バージョン ドライバーをコンパイルし、デモはデータベース テストに接続します

元記事の場合、転載の際は元記事の出典を明記してください
この記事のブログアドレス: https: //hpzwl.blog.csdn.net/article/details/130381428

Red Fatty Network Technology Blog 百科事典:開発技術集(Qt実用技術、Raspberry Pi、3D、OpenCV、OpenGL、ffmpeg、OSG、シングルチップマイコン、ソフトウェアとハ​​ードウェアの組み合わせなど)を随時更新中…

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

おすすめ

転載: blog.csdn.net/qq21497936/article/details/130381428