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

 
Eugeniy Lugovoy:

ジェームスさん、こんにちは、

私は現在、Upworkで1つの大きなプロジェクトだけを担当しています。だから、最近はあまり自由な時間がありません。リブについて何かお困りですか?どうすればいいですか?

こんにちは、

最終的には解決しましたが、とにかくライブラリーに感謝します。とても助かったよ

ジェームス
 

ビルド890 mt4にアップグレードした後、すべてが機能しなくなったのはなぜですか?

ログにAccess violation read to 0x00000000 in 'D:゙MT4MQL゙MQLMySQL.dll' とあります。

 
にも興味がある
 
Itum:
も興味がある...
みんな、数日中にチェックしてみるよ。
 
楽しみにしているよ!
 
alhimik7:
楽しみにしている!

MT4ビルド890 x32を確認しました。すべて動作しています。

テストスクリプトの実行ログ:

2015.12.05 12:20:09.984 Script MySQL-005 EURUSD,H1: removed
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: uninit reason 0
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: Disconnected. Script done!
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: Passed!
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: Closing cursors...
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: Cursor 4 was opened.
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: Cursor 3 was opened.
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: Cursor 2 was opened.
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: Cursor 1 was opened.
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: Connected! DBID#0
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: Connecting...
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: Host: 127.0.0.1, User: mt4, Database: mt4
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: MQLMySQL v2.2 x32 Copyright © 2014, FxCodex Laboratory
2015.12.05 12:20:09.984 MySQL-005 EURUSD,H1: initialized
2015.12.05 12:20:09.968 Script MySQL-005 EURUSD,H1: loaded successfully
2015.12.05 12:20:04.484 Script MySQL-004 EURUSD,H1: removed
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: uninit reason 0
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: Disconnected. Script done!
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: ROW[3]: id = 4, code = USDJPY, start_time = 2014.01.03 03:00:00
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: ROW[2]: id = 3, code = EURJPY, start_time = 2014.01.02 00:02:00
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: ROW[1]: id = 1, code = EURUSD, start_time = 2014.01.01 00:00:01
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: ROW[0]: id = 123279852, code = ACCOUNT, start_time = 2015.12.05 12:20:00
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: Rows affected: 4
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: 4 row(s) selected.
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: SQL> SELECT id, code, start_date FROM `test_table`
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: Connected! DBID#0
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: Connecting...
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: Host: 127.0.0.1, User: mt4, Database: mt4
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: MQLMySQL v2.2 x32 Copyright © 2014, FxCodex Laboratory
2015.12.05 12:20:04.484 MySQL-004 EURUSD,H1: initialized
2015.12.05 12:20:04.484 Script MySQL-004 EURUSD,H1: loaded successfully
2015.12.05 12:20:00.093 Script MySQL-003 EURUSD,H1: removed
2015.12.05 12:20:00.093 MySQL-003 EURUSD,H1: uninit reason 0
2015.12.05 12:20:00.093 MySQL-003 EURUSD,H1: Disconnected. Script done!
2015.12.05 12:20:00.093 MySQL-003 EURUSD,H1: Rows affected: 2
2015.12.05 12:20:00.093 MySQL-003 EURUSD,H1: Succeeded! 2 rows has been updated.
2015.12.05 12:20:00.078 MySQL-003 EURUSD,H1: Rows affected: 1
2015.12.05 12:20:00.078 MySQL-003 EURUSD,H1: Succeeded! 3 rows has been inserted by one query.
2015.12.05 12:20:00.031 MySQL-003 EURUSD,H1: Rows affected: 1
2015.12.05 12:20:00.031 MySQL-003 EURUSD,H1: Succeeded: INSERT INTO `test_table` (id, code, start_date) VALUES (123279852,'ACCOUNT','2015.12.05 12:20:00')
2015.12.05 12:20:00.031 MySQL-003 EURUSD,H1: Table `test_table` created.
2015.12.05 12:19:59.968 MySQL-003 EURUSD,H1: Connected! DBID#0
2015.12.05 12:19:59.953 MySQL-003 EURUSD,H1: Connecting...
2015.12.05 12:19:59.953 MySQL-003 EURUSD,H1: Host: 127.0.0.1, User: mt4, Database: mt4
2015.12.05 12:19:59.953 MySQL-003 EURUSD,H1: MQLMySQL v2.2 x32 Copyright © 2014, FxCodex Laboratory
2015.12.05 12:19:59.953 MySQL-003 EURUSD,H1: initialized
2015.12.05 12:19:59.953 Script MySQL-003 EURUSD,H1: loaded successfully
2015.12.05 12:19:55.531 Script MySQL-002 EURUSD,H1: removed
2015.12.05 12:19:55.531 MySQL-002 EURUSD,H1: uninit reason 0
2015.12.05 12:19:55.531 MySQL-002 EURUSD,H1: Disconnected. Script done!
2015.12.05 12:19:55.531 MySQL-002 EURUSD,H1: Table `test_table` created.
2015.12.05 12:19:55.218 MySQL-002 EURUSD,H1: Connected! DBID#0
2015.12.05 12:19:55.218 MySQL-002 EURUSD,H1: Connecting...
2015.12.05 12:19:55.218 MySQL-002 EURUSD,H1: Host: 127.0.0.1, User: mt4, Database: mt4
2015.12.05 12:19:55.218 MySQL-002 EURUSD,H1: MQLMySQL v2.2 x32 Copyright © 2014, FxCodex Laboratory
2015.12.05 12:19:55.218 MySQL-002 EURUSD,H1: initialized
2015.12.05 12:19:55.218 Script MySQL-002 EURUSD,H1: loaded successfully
2015.12.05 12:19:49.625 Script MySQL-001 EURUSD,H1: removed
2015.12.05 12:19:49.625 MySQL-001 EURUSD,H1: uninit reason 0
2015.12.05 12:19:49.625 MySQL-001 EURUSD,H1: All connections closed. Script done!
2015.12.05 12:19:49.625 MySQL-001 EURUSD,H1: Connected! DBID#2
2015.12.05 12:19:49.625 MySQL-001 EURUSD,H1: Connected! DBID#1
2015.12.05 12:19:49.625 MySQL-001 EURUSD,H1: Connected! DBID#0
2015.12.05 12:19:49.609 MySQL-001 EURUSD,H1: Connecting...
2015.12.05 12:19:49.609 MySQL-001 EURUSD,H1: Host: 127.0.0.1, User: mt4, Database: mt4
2015.12.05 12:19:49.609 MySQL-001 EURUSD,H1: MQLMySQL v2.2 x32 Copyright © 2014, FxCodex Laboratory
2015.12.05 12:19:49.609 MySQL-001 EURUSD,H1: initialized
2015.12.05 12:19:49.546 Script MySQL-001 EURUSD,H1: loaded successfully

みんな、はっきりしてくれ:

1.どのような操作で"Access violation read " と表示されますか??

2.2.MySQL-001スクリプトを実行する際、エキスパートタブに表示されるMQLMySQLのバージョンは何ですか?MQLMySQL v2.2 x32 Copyright © 2014, FxCodex Laboratory

3.MySQL データベースのバージョンは?

4.MySQLはローカルで使用されていますか、それともリモートホストで使用されていますか?

5.ターミナルは どのオペレーティングシステムで実行して いますか?

エラーが再現できないので、確認して報告してください。

同じような環境を作ってテストしてみます。

 

こんにちは、

メタトレーダーをMysqlに接続しようとしています。
ダウンロードとインストールの後、私は私のDBの情報を設定することにより、 "MyConnection "ファイルを変更しました。

問題はここからです:

スクリプトはDB内にテーブルを作成して いました。スクリプトがDB内にテーブルを作成していたのです。その後、コードを少し変更し(テーブル名を変更しただけです)、データベースからテーブルを削除しました。その結果、カラムは作成されたが、データは作成されなかった。
そこで、古いスクリプトをもう一度使ってみることにした。すると、テーブルさえも作成されなかった。それ以来、DBは空のままです。

何がいけなかったのでしょうか?

よろしくお願いします!

 
peg:

こんにちは、

メタトレーダーをMysqlに接続しようとしています。
ダウンロードとインストールの後、私は私のDBの情報を設定することにより、 "MyConnection "ファイルを変更しました。

問題はここからです:

スクリプトはDB内にテーブルを作成していました。スクリプトがDB内にテーブルを作成していたのです。その後、コードを少し変更し(テーブル名を変更しただけです)、データベースからテーブルを削除しました。その結果、カラムは作成されたが、データは作成されなかった。
そこで、古いスクリプトをもう一度使ってみることにした。すると、テーブルさえも作成されなかった。それ以来、DBは空のままです。

何がいけなかったのでしょうか?

よろしくお願いします!

こんにちは、

テーブルを作成するには、SQLコマンド CREATE TABLEhttp://dev.mysql.com/doc/refman/5.7/en/create-table.html を使用します。

データを挿入するには、SQLコマンドINSERT INTOhttps://dev.mysql.com/doc/refman/5.6/en/insert.html を使用します。

このようなコマンドを実行するには、関数 MySqlExecute を使用します。

また、あなたのコードを提供することができます。

MySQL :: MySQL 5.7 Reference Manual :: 13.1.14 CREATE TABLE Syntax
  • dev.mysql.com
creates a table with the given name. You must have the privilege for the table. Rules for permissible table names are given in Section 9.2, “Schema Object Names”. By default, the table is created in the default database, using the storage engine. An error occurs if the table exists, if there is no default database, or if the database does not...
 
Eugeniy Lugovoy:

こんにちは、

テーブルを作成するには、SQL コマンド CREATE TABLE http://dev.mysql.com/doc/refman/5.7/en/create-table.html を使用します。

データを挿入するには、SQL コマンド INSERT INTO https://dev.mysql.com/doc/refman/5.6/en/insert.html を使用します。

このようなコマンドを実行するには、関数 MySqlExecute を使用します。

また、あなたのコードを提供してください。

Eugeniyさん、こんにちは、

リンクをありがとうございます。

まず、あなたのコードを使ってデータベースに接続しました。そしてテーブルを見ることができました。その後、MySQL-002スクリプトでテーブルの名前を変更しました。現在、WampServerを使用していますが、以下のようになります:

0 11:09:37.579 スクリプト MySQL-002 EURUSD,H1: 正常にロードされました。

0 11:09:37.730 MySQL-002 EURUSD,H1: 初期化されました。

0 11:09:37.730 MySQL-002 EURUSD,H1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory

0 11:09:37.730 MySQL-002 EURUSD,H1: Host:ユーザー: , データベース:

0 11:09:37.730 MySQL-002 EURUSD,H1: 接続中...

0 11:09:37.741 MySQL-002 EURUSD,H1: 接続しました!DBID#0

0 11:09:37.742 MySQL-002 EURUSD,H1: テーブル `table` を作成できません。エラーが発生しました:エラーが発生しました。

0 11:09:37.742 MySQL-002 EURUSD,H1: 接続が切断されました。スクリプトは終了しました!

0 11:09:37.742 MySQL-002 EURUSD,H1: 終了理由 0

0 11:09:37.743 スクリプト MySQL-002 EURUSD,H1:削除されました

//+------------------------------------------------------------------+
//|MySQL-002.mq4
//|著作権 2014, Eugene Lugovoy||ユージン・ルゴヴォイ
//|http://fxcodexlab.comfxcodexlab.com||http://www.
//| テーブル作成(デモ)|
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, Eugene Lugovoy."
#property link      "http://www.fxcodexlab.com"
#property version   "1.00"
#property strict

#include <MQLMySQL.mqh>

string INI;
//+------------------------------------------------------------------+
//| スクリプト・プログラム開始機能|
//+------------------------------------------------------------------+
void OnStart()
{
 string Host, User, Password, Database, Socket; // データベースの認証情報
 int Port,ClientFlag;
 int DB; // データベース識別子
 
 Print (MySqlVersion());

 INI = TerminalPath()+"\\MQL4\\Scripts\\MyConnection.ini";
 
 // INIファイルからデータベースの認証情報を読み込む
 Host = ReadIni(INI, "MYSQL", "Host");
 User = ReadIni(INI, "MYSQL", "User");
 Password = ReadIni(INI, "MYSQL", "Password");
 Database = ReadIni(INI, "MYSQL", "Database");
 Port     = StrToInteger(ReadIni(INI, "MYSQL", "Port"));
 Socket   = ReadIni(INI, "MYSQL", "Socket");
 ClientFlag = StrToInteger(ReadIni(INI, "MYSQL", "ClientFlag"));  

 Print ("Host: ",Host, ", User: ", User, ", Database: ",Database);
 
 // データベース接続を開く
 Print ("Connecting...");
 
 DB = MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);
 
 if (DB == -1) { Print ("Connection failed! Error: "+MySqlErrorDescription); } else { Print ("Connected! DBID#",DB);}
 
 string Query;
 Query = "DROP TABLE IF EXISTS `test`";
 MySqlExecute(DB, Query);
 
 Query = "CREATE TABLE `test` (id int, code varchar(50), start_date datetime)";
 if (MySqlExecute(DB, Query))
    {
     Print ("Table `test` created.");
    }
 else
    {
     Print ("Table `test` cannot be created. Error: ", MySqlErrorDescription);
    }
 
 MySqlDisconnect(DB);
 Print ("Disconnected. Script done!");
}
//+------------------------------------------------------------------+
 
peg:

こんにちは、Eugeniy、

リンクをありがとう。

まず、あなたのコードを使ってデータベースに接続しました。そしてテーブルを見ることができました。その後、MySQL-002スクリプトでテーブルの名前を変更しました。現在、WampServerを使用していますが、以下のようになります:

0 11:09:37.579 スクリプト MySQL-002 EURUSD,H1: 正常にロードされました。

0 11:09:37.730 MySQL-002 EURUSD,H1: 初期化されました。

0 11:09:37.730 MySQL-002 EURUSD,H1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory

0 11:09:37.730 MySQL-002 EURUSD,H1: Host:ユーザー: , データベース:

0 11:09:37.730 MySQL-002 EURUSD,H1: 接続中...

0 11:09:37.741 MySQL-002 EURUSD,H1: 接続しました!DBID#0

0 11:09:37.742 MySQL-002 EURUSD,H1: テーブル `table` を作成できません。エラーが発生しました:エラーが発生しました。

0 11:09:37.742 MySQL-002 EURUSD,H1: 接続が切断されました。スクリプトは終了しました!

0 11:09:37.742 MySQL-002 EURUSD,H1: 終了理由 0

0 11:09:37.743 スクリプト MySQL-002 EURUSD,H1: 削除されました。

0 11:09:37.742 MySQL-002 EURUSD,H1: テーブル `table` を作成できません。

テーブル名として使用できない "table "という名前を使用しています。

接続後すぐに "USE database_name "コマンドを実行することができます。

例えば、私のデータベースが "mysql "である場合:

DB = MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag);

if (DB ==-1) { Print ("接続に失敗しました!エラー: "+MySqlErrorDescription); } else { Print ("接続されました!DBID#",DB);}。

MySqlExecute(DB, "USE mysql");