"MQL5'ten (MQL4) MySQL Veritabanına Nasıl Erişilir" makalesi için tartışma - sayfa 8

 
Eugeniy Lugovoy:

Merhaba James,

Şu anda Upwork'te sadece bir büyük proje üzerinde çalışıyorum. Yani bugünlerde pek boş zamanım yok. Libs ile yaşadığınız sorun nedir? Size nasıl yardımcı olabilirim?

Merhaba,

Sonunda çözdüm, ama yine de kütüphane için teşekkürler.... Çok yardımcı oldu!!!

James
 

Yapı 890 mt4'e yükselttikten sonra neden her şey çalışmayı durdurdu?

Günlük, 'D:\MT4\MQL4\libraries\MQLMySQL.dll' içinde 0x00000000'a erişim ihlali okunduğunu söylüyor.

 
ayrıca ilgilenen ...
 
Itum:
ayrıca ilgileniyorum ...
Beyler, önümüzdeki birkaç gün içinde kontrol etmeye çalışacağım.
 
Dört gözle bekliyorum!
 
alhimik7:
Dört gözle bekliyorum!

MT4 yapı 890 x32 az önce kontrol edildi. Her şey çalışıyor.

Test komut dosyalarını çalıştırma günlüğü:

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

Beyler, açıklığa kavuşturun:

1. Hangi işlemde"Erişim ihlali okundu" veriyor? ?

2. MySQL-001 betiğini çalıştırırken, Uzmanlar sekmesinde MQLMySQL'in hangi sürümü gösterilir? şu şekilde olmalıdır: MQLMySQL v2.2 x32 Copyright © 2014, FxCodex Laboratory

3. MySQL veritabanının hangi sürümü?

4. MySQL yerel olarak mı yoksa uzak bir ana bilgisayarda mı kullanılıyor?

5. Terminali hangi işletim sistemi altında çalıştırıyorsunuz?

Hatayı yeniden üretemediğim için lütfen kontrol edin ve raporlayın.

Benzer bir ortam oluşturup test edeceğim.

 

Merhaba,

Metatrader'ı dosyalarınız aracılığıyla Mysql'e bağlamaya çalışıyorum.
İndirme ve kurulumdan sonra "MyConnection" dosyasını DB'min bilgilerini ayarlayarak değiştirdim.

İşte sorun başlıyor:

İlk başta her şey yolunda gitti; komut dosyaları DB içinde tablolar oluşturuyordu. Sonra kodda küçük bir değişiklik yaptım (sadece tablonun adını değiştirdim) ve tabloyu veritabanından sildim, böylece komut dosyası bir öncekini düşürmeden sıfırdan yeni bir tane oluşturacaktı. Elde ettiğim tek şey sütunların oluşturulmasıydı ancak herhangi bir veri yoktu.
Bu yüzden eski komut dosyalarını tekrar kullanmaya karar verdim. O zaman hiçbir şey elde edemedim; bir tablo bile oluşturulmadı. O zamandan beri boş kalan bir DB'm var.

Neyin yanlış gitmiş olabileceğine dair bir fikriniz var mı?

Şimdiden teşekkürler!

 
peg:

Merhaba,

Metatrader'ı dosyalarınız aracılığıyla Mysql'e bağlamaya çalışıyorum.
İndirme ve kurulumdan sonra "MyConnection" dosyasını DB'min bilgilerini ayarlayarak değiştirdim.

İşte sorun başlıyor:

İlk başta her şey yolunda gitti; komut dosyaları DB içinde tablolar oluşturuyordu. Sonra kodda küçük bir değişiklik yaptım (sadece tablonun adını değiştirdim) ve tabloyu veritabanından sildim, böylece komut dosyası bir öncekini düşürmeden sıfırdan yeni bir tane oluşturacaktı. Elde ettiğim tek şey sütunların oluşturulmasıydı ancak herhangi bir veri yoktu.
Bu yüzden eski komut dosyalarını tekrar kullanmaya karar verdim. O zaman hiçbir şey elde edemedim; bir tablo bile oluşturulmadı. O zamandan beri boş kalan bir DB'm var.

Neyin yanlış gitmiş olabileceğine dair bir fikriniz var mı?

Şimdiden teşekkürler!

Merhaba Peg,

Tablo oluşturmak için SQL komutunu kullanın CREATE TABLE http://dev.mysql.com/doc/refman/5.7/en/create-table.html

Veri eklemek için SQL komutunu kullanın INSERT INTO https://dev.mysql.com/doc/refman/5.6/en/insert.html

Bu tür komutları çalıştırmak için MySqlExecute fonksiyonunu kullanın.

Ayrıca kodunuzu sağlayabilirsiniz ve ben de sorunu çözebilirim.

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:

Merhaba Peg,

Tablo oluşturmak için SQL komutunu kullanın CREATE TABLE http://dev.mysql.com/doc/refman/5.7/en/create-table.html

Veri eklemek için SQL komutunu kullanın INSERT INTO https://dev.mysql.com/doc/refman/5.6/en/insert.html

Bu tür komutları çalıştırmak için MySqlExecute fonksiyonunu kullanın.

Ayrıca kodunuzu sağlayabilirsiniz ve ben de sorunu çözebilirim.

Merhaba Eugeniy,

Bağlantılar için teşekkür ederim.

İlk başta veritabanıma bağlanmak için kodunuzu kullandım (yararlı olması durumunda mySql Server kullanıyordum). Ve tabloyu görebildim. Sonra MySQL-002 Script'inizde tablonun adını değiştirdim (aşağıda görebileceğiniz gibi) ve işe yarıyor gibi göründüğünü düşündüm, tablomu oluşturmadı. Şimdi WampServer kullanıyorum ve alıyorum:

0 11:09:37.579 Script MySQL-002 EURUSD,H1: başarıyla yüklendi

0 11:09:37.730 MySQL-002 EURUSD,H1: başlatıldı

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: Ana bilgisayar: , Kullanıcı: , Veritabanı:

0 11:09:37.730 MySQL-002 EURUSD,H1: Bağlanıyor...

0 11:09:37.741 MySQL-002 EURUSD,H1: Bağlandı! DBID#0

0 11:09:37.742 MySQL-002 EURUSD,H1: Tablo `table` oluşturulamıyor. Hata oluştu: Bir taban oluşturulamıyor

0 11:09:37.742 MySQL-002 EURUSD,H1: Bağlantı kesildi. Betik tamamlandı!

0 11:09:37.742 MySQL-002 EURUSD,H1: uninit nedeni 0

0 11:09:37.743 Script MySQL-002 EURUSD,H1: kaldırıldı

//+------------------------------------------------------------------+
//|MySQL-002.mq4 |
//|Telif Hakkı 2014, Eugene Lugovoy |
//|http://www.fxcodexlab.com |
//| Tablo oluşturma (DEMO)|
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, Eugene Lugovoy."
#property link      "http://www.fxcodexlab.com"
#property version   "1.00"
#property strict

#include <MQLMySQL.mqh>

string INI;
//+------------------------------------------------------------------+
//| Betik program başlatma işlevi|
//+------------------------------------------------------------------+
void OnStart()
{
 string Host, User, Password, Database, Socket; // veritabanı kimlik bilgileri
 int Port,ClientFlag;
 int DB; // veritabanı tanımlayıcısı
 
 Print (MySqlVersion());

 INI = TerminalPath()+"\\MQL4\\Scripts\\MyConnection.ini";
 
 // INI dosyasından veritabanı kimlik bilgilerini okuma
 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);
 
 // veritabanı bağlantısını aç
 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:

Merhaba Eugeniy,

Bağlantılar için teşekkür ederim.

İlk başta veritabanıma bağlanmak için kodunuzu kullandım (yararlı olması durumunda mySql Server kullanıyordum). Ve tabloyu görebildim. Sonra MySQL-002 Script'inizde tablonun adını değiştirdim (aşağıda görebileceğiniz gibi) ve işe yarıyor gibi göründüğünü düşündüm, tablomu oluşturmadı. Şimdi WampServer kullanıyorum ve alıyorum:

0 11:09:37.579 Script MySQL-002 EURUSD,H1: başarıyla yüklendi

0 11:09:37.730 MySQL-002 EURUSD,H1: başlatıldı

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: Ana bilgisayar: , Kullanıcı: , Veritabanı:

0 11:09:37.730 MySQL-002 EURUSD,H1: Bağlanıyor...

0 11:09:37.741 MySQL-002 EURUSD,H1: Bağlandı! DBID#0

0 11:09:37.742 MySQL-002 EURUSD,H1: Tablo `table` oluşturulamıyor. Hata oluştu: Hiçbir taban oluşturulamıyor

0 11:09:37.742 MySQL-002 EURUSD,H1: Bağlantı kesildi. Komut dosyası tamamlandı!

0 11:09:37.742 MySQL-002 EURUSD,H1: uninit nedeni 0

0 11:09:37.743 Script MySQL-002 EURUSD,H1: kaldırıldı

Günlüğünüzden gördüğüm hataya göre: 0 11:09:37.742 MySQL-002 EURUSD,H1: Tablo `table` oluşturulamıyor.

mysql veritabanının anahtar kelimesi olan ve tablo adı olarak kullanılamayan "table" adını kullanıyorsunuz, sadece çalışıp çalışmadığını kontrol etmek için örneğin "table1" olarak değiştirmeyi deneyin.

veya veritabanı seçilmemiş veya ayarlanmamış olabilir. bağlantıdan hemen sonra "USE database_name" komutunu çalıştırabilirsiniz, burada database_name veritabanınızın adıdır.

örneğin benim veritabanım "mysql" ise:

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

if (DB ==-1) { Print ("Connection failed! Error: "+MySqlErrorDescription); }else { Print ("Connected! DBID#",DB);}

MySqlExecute(DB, "USE mysql");