記事"MQL5 (MQL4)から MySQL データベースにアクセスする方法"についてのディスカッション - ページ 13

 
Pavel Kolchin:

win 7 x64 - mt5 x64 最新版 (v5 b1455)

MySQLにアクセスできないのが残念でならない

サーバー:UNIXソケット経由Localhost

サーバータイプ: Percona Server

サーバーバージョン: 5.5.35-33.0-log - Percona Server (GPL), リリース rel33.0, リビジョン 611

プロトコルバージョン: 10

ユーザー: ***

サーバーのエンコーディング: UTF-8 Unicode (utf8)

mql4 で動作します。
エラーが再現されました。解決します
 

MQL5用にリコンパイルしたx64はこちら。

Pavelも試してみてください。

ファイル:
MQL5_x64.zip  1412 kb
 
Eugeniy Lugovoy:


DLLの接続に関する問題はもうない。

すべてうまくいった。

 
Pavel Kolchin:

DLLの接続に関する問題はもうない。

すべてうまくいった。

いつでもお手伝いします。

あなたのプロジェクトに 幸あれ。

 
Yuriy Asaulenko:

ありがとう。今回の記事の著者の指摘はとてもいい。そしてすべてを台無しにした)。


私自身、衝突の問題に遭遇したことが一度や二度ではありません。例えば、取引ロボットが異なるチャートに接続されているが、1つのベースを使っており、アクセスが1つの汎用テーブル(例えばセッションの登録/変更、口座)である場合、どのような場合でも「テーブルがロックされました」のようなエラーが発生します。また、すべてのトランザクションが完了し、カーソルが閉じられ、データベースが共有モードでオープンされていることは関係ありません。


このコメンテータはおそらくsqliteの設定を理解していないのでしょう。sqliteは ロック付きモード用のコンパイルやプラグマによってすべての衝突を解決しています。

私は、同時読み取り/書き込みマルチスレッドによる重いプロジェクトに数年間取り組んできましたが、問題はありませんでした。

 
o_O:

コメントした人は、おそらくsqliteの設定を理解していなかったのでしょう。sqliteの設定は、ロック付きモードのコンパイルやプラグマによってすべての衝突を解決します。

私は数年間、同時読み書きマルチスレッドの重いプロジェクトに携わってきましたが、何の問題もありませんでした。

o_o

どちらかと言えば、私はSQLiteのために そのプロジェクトを ピックアップし、テストスクリプト/EAを書き、再びロックが発生する場合は、(あなたが気にしないなら)一緒にそれを解決し、コミュニティにソフトウェアソリューションを提供することができます。

DBの利点(自律性、SQL、可動性、埋め込み可能性など)がいくつかあるので、これに注目する価値はあるかもしれません。

実際、私はSQLiteから準備のできたDLLを取り出し(ソースコードではない)、再コンパイルはせず、C++のAPIだけで作業した。

 
Eugeniy Lugovoy:

o_o

もし何かあれば、私がSQLiteのプロジェクトを拾って、テストスクリプト/EAを書いて、もしまたロックがあれば、(あなたが気にしなければ)一緒に解決して、コミュニティにソフトウェアソリューションを提供することができます。

DBの利点(自律性、SQL、可動性、埋め込み可能性など)もあるので、これに注目する価値はあるかもしれない。

実際、私はSQLiteから既製のDLLを取り出し(ソースコードではない)、再コンパイルせず、C++ APIだけで作業した。

SQLiteの ロックの "神話 "が確認されたり、払拭されたりしたら本当に面白い。もしこの不確実性がなければ、あるいはそれに対処するソリューションがなければ、SQliteは相互運用性のための非常に魅力的な選択肢です。SQliteのパフォーマンスについて、例えば同じデータベースをAccessで使用した場合と比較した場合など、何か分かることがあれば興味深い。もちろん、そのような作業をする時間と意欲があればの話だが。

Access、SQL Server、Oracleなど、どのようなデータベースにも接続可能なサードパーティ製ソフトウェアとのベース接続にも疑問が残る。SQLiteにはOLEDBやODBCのようなドライバがインストールされているのでしょうか?また、同じAccessで、複数のアプリケーションが異なるインターフェースを通して同じデータベースに非同期で書き込み・読み込みを行うことも問題なくできます。これはSQLiteでは機能しないのではないでしょうか。

 
Yuriy Asaulenko:

SQLiteロックの "神話 "が確認されたり、払拭されたりしたら、本当に興味深い。もしこの不確実性がなければ、あるいはこの不確実性をなくすための解決策がなければ、SQliteは相互運用性のための非常に魅力的な選択肢です。SQliteのパフォーマンスについても、例えば同じデータベースをAccessと比較した場合など、何かわかれば興味深い。もちろん、そのような作業をする時間と意欲があればの話だが。

Access、SQL Server、Oracleなど、どのようなデータベースにも接続可能なサードパーティ製ソフトウェアとのベース接続にも疑問が残る。SQLiteにはOLEDBやODBCのようなドライバがインストールされているのでしょうか?また、同じAccessで、複数のアプリケーションが異なるインターフェースを通して同じデータベースに非同期で書き込み・読み込みを行うことも問題なくできます。これはSQLiteでは機能しないのではないでしょうか。

SQLite 用のOLEDBはあります。ところで、OLEDBからSQLiteへのロケーティングに関するテストスクリプトを実行するのは面白いアイデアだ。もちろん変態だが、ここではみんな変態だ。

ネイティブ・アクセスについては、共同作業によって良い結果が得られると信じている。時間の問題で、今週は無理だけど...。週末に時間を作って...。

 
Eugeniy Lugovoy:

SQLite用のOLEDBはあります。ところで、OLEDBを経由してSQLiteにLocするテストスクリプトを実行するのは面白いアイデアだ。もちろん変態だが、ここではみんな変態だ。

ネイティブ・アクセスについては、共同作業によって良い結果が得られると信じている。ただ時間の問題で、今週は無理だ...。週末に時間を割くつもりだ。

私はデータベースを作成し、多くのテーブルに大量の情報を書き込む(読み込むのではない)アプリケーションを持っています。もしコンピューターにインストールされていて、アプリケーションの設定から見ることができるOLEDBドライバーを見つけることができれば、SQLiteが ハングアップしないかどうかを簡単にテストすることができる。同様に、同じAccessでSQLiteに接続し、並行してテーブルの読み込みと変更を試すことができる。もちろん、測定することはできません。

インターネットを介して見た。一度にそのようなOLEDBプロバイダを見つけることができませんでした。私が理解する限り、プログラミング言語からしか使用できないOLEDB DLLばかりである。

 

というのはどういう意味ですか?

この行のコードを実行すると

if(DB==-1){DB=MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);}

res = MySqlCursorOpen(DB, "SELECT id, account, symbol FROM `current` WHERE account="+account);