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

 
Eugeniy Lugovoy:

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

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

Beyler, lütfen açıklayın:

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.

MT4 (950) kullanıyorum. Dosyaları makaleye ekli arşivden aldım. En son sürüm olmadığını doğru anladım mı?: MySQL-001 EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory.

Yapılandırma dosyasından veri okumuyor.

 
Sergey Deynego:

MT4 (950) kullanıyorum. Dosyaları makaleye ekli arşivden aldım. En son sürüm olmadığını doğru anladım mı?: MySQL-001 EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory

Yapılandırma dosyasından veri okumaz.

Evet, v2.0 eski. Makalenin tartışma bölümünde daha yeni sürümleri zaten yayınlamıştım.

Şimdi ekleyeceğim.

MQLMySQL v2.2 - x64 ve x86 için DLL proje kaynakları

Bundan bir şey deneyin. En son sürüm gibi görünüyor.

Dosyalar:
MQLMySQL_v2.2.zip  4801 kb
MQL4_x32.zip  1073 kb
MQL5_x32.zip  1073 kb
MQL5_x64.zip  1076 kb
 
Eugeniy Lugovoy:

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");

Tablo adı ve MySqlExecute(DB, "USE mt4") komutu için önerilerinizi uyguladım ancak yine de hata mesajı alıyorum:

0 12:51:40.534 Script MySQL-002new EURUSD,M1: başarıyla yüklendi

0 12:51:40.549 MySQL-002new EURUSD,M1: başlatıldı

0 12:51:40.549 MySQL-002new EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory

0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , Kullanıcı: , Veritabanı:

0 12:51:40.549 MySQL-002new EURUSD,M1: Bağlanıyor...

0 12:51:40.565 MySQL-002new EURUSD,M1: Bağlandı! DBID#0

0 12:51:40.565 MySQL-002new EURUSD,M1: `test_table` tablosu oluşturulamıyor. Hata oluştu: Hiçbir taban oluşturulamıyor

0 12:51:40.565 MySQL-002new EURUSD,M1: Bağlantı kesildi. Komut dosyası tamamlandı!

0 12:51:40.565 MySQL-002new EURUSD,M1: uninit reason 0

0 12:51:40.565 Script MySQL-002new EURUSD,M1: kaldırıldı

 

Merhaba Eugeniy Lugovoy,

Faydalı projeniz için çok teşekkürler.

Bir tablodan yaklaşık 3.000 karakterlik bir string alanı okumaya çalışıyorum, "MySqlGetFieldAsString" i şu şekilde kullandım:


if (Cursor >= 0)

{

Rows = MySqlCursorRows(Cursor);

for (int i=0; i<Satırlar; i++)

eğer (MySqlCursorFetchRow(Cursor))

{

Get_Setting = MySqlGetFieldAsString(Cursor, 4);

}

.....

Ancak sorun şu ki Get_String bana yalnızca 1025 karakter döndürüyor,

Bu alanı tamamen okumam gerekiyor.

Bunu çözmeme yardım edebilir misiniz?

Saygılarımla

 
FX. MDA7:

Merhaba Eugeniy Lugovoy,

Faydalı projeniz için çok teşekkürler.

Bir tablodan yaklaşık 3.000 karakterlik bir string alanı okumaya çalışıyorum, "MySqlGetFieldAsString" i şu şekilde kullandım:


if (Cursor >= 0)

{

Rows = MySqlCursorRows(Cursor);

for (int i=0; i<Satırlar; i++)

eğer (MySqlCursorFetchRow(Cursor))

{

Get_Setting = MySqlGetFieldAsString(Cursor, 4);

}

.....

Ancak sorun şu ki Get_String bana yalnızca 1025 karakter döndürüyor,

Bu alanı tamamen okumam gerekiyor.

Bunu çözmeme yardım edebilir misiniz?

Saygılarımla

Evet, karakter verilerinin maksimum uzunluğunu 1024 karakter olarak ayarladım. Bu sınırı değiştirebilir ve DLL'yi yeniden oluşturabilirim. Bu arada, db tarafında bu sütun için hangi veri türünü kullanıyorsunuz?
 
peg:

Tablo adı ve MySqlExecute(DB, "USE mt4") komutu için önerilerinizi uyguladım ancak yine de hata mesajı alıyorum:

0 12:51:40.534 Script MySQL-002new EURUSD,M1: başarıyla yüklendi

0 12:51:40.549 MySQL-002new EURUSD,M1: başlatıldı

0 12:51:40.549 MySQL-002new EURUSD,M1: MQLMySQL v2.0 Demo Copyright © 2014, FxCodex Laboratory

0 12:51:40.549 MySQL-002new EURUSD,M1: Host: , Kullanıcı: , Veritabanı:

0 12:51:40.549 MySQL-002new EURUSD,M1: Bağlanıyor...

0 12:51:40.565 MySQL-002new EURUSD,M1: Bağlandı! DBID#0

0 12:51:40.565 MySQL-002new EURUSD,M1: `test_table` tablosu oluşturulamıyor. Hata oluştu: Hiçbir taban oluşturulamıyor

0 12:51:40.565 MySQL-002new EURUSD,M1: Bağlantı kesildi. Komut dosyası tamamlandı!

0 12:51:40.565 MySQL-002new EURUSD,M1: uninit reason 0

0 12:51:40.565 Script MySQL-002new EURUSD,M1: kaldırıldı

neden"MQLMySQL v2.0" sürümü? 2.2 olmalı
 

Mükemmel!

MQL4 için veri oluşturmak üzere MQL5 kullanıyorum.

Sorgu komutunda tablename etrafındaki tek tırnak işaretlerini kaldırmam gerekmesi dışında her şey güzel çalıştı

Sorgu ="SELECT Symbol,Composite,Pattern FROM summarytable";

tamam çalışıyor

 
Ingvar Engelbrecht:

Mükemmel!

MQL4 için veri oluşturmak üzere MQL5 kullanıyorum.

Sorgu komutunda tablename etrafındaki tek tırnak işaretlerini kaldırmam gerekmesi dışında her şey güzel çalıştı

Sorgu ="SELECT Symbol,Composite,Pattern FROM summarytable";

tamam çalışıyor

Evet, tabloları büyük/küçük harflerle (mysql büyük/küçük harfe duyarlıdır) ve özel sembollerle adlandırmayı planlamıyorsanız tırnak işareti olmadan kullanmak mümkündür. Bu arada, tek tırnak sembolü "'" değil, "`"

Yani sorgunuz şöyle de olabilir: Query ="SELECT `Symbol`,`Composite`,`Pattern` FROM `summarytable`";

eğer sütunlara sembol veya SYMBOL değil de Symbol adını vermek istiyorsanız

 

Merhaba Eugeniy,

Modülünüz için teşekkürler, çok yardımcı oldu. Alan Adı almak için fonksiyon eklemeye yardımcı olabilir misiniz? veya VC++'a nasıl ekleyebilirim?

 

Nasılsınız!

sistem win10 64x, veritabanına bağlanılamıyor, bana yardımcı olabilir misiniz?