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

 
Peki ya caching_sha2_password desteği ? Bununla başa çıkmanın bir yolu var mı yoksa sadece mysql_native_password'ü mü yüklemeliyim?
 
Dmitri Custurov:
Peki ya caching_sha2_password desteği ? Bununla başa çıkmanın veya sadece mysql_native_password yüklemenin bir yolu var mı?

Şimdiye kadar sadece native destekleniyor. bu çözümde sha2 desteğine gerçekten ihtiyacı olan var mı?

Yani veritabanı sunucunuz yerel olarak konumlandırılmamış veya hatta vpn altında değil mi?

 

Merhaba @EugeniyLugovoy ve sıkı çalışmanız için teşekkürler!

Uygulamanızın mevcut sürümünde, bir INSERT işleminden sonra (AUTO_INCREMENT sütunu olan bir tabloda) "LAST_INSERT_ID" yi almanın bir yolu var mı?

Şimdiden teşekkürler ve iyi günler :)
 
arsenico42:

Merhaba @EugeniyLugovoy ve sıkı çalışmanız için teşekkürler!

Uygulamanızın mevcut sürümünde, bir INSERT işleminden sonra (AUTO_INCREMENT sütunu olan bir tabloda) "LAST_INSERT_ID" yi almanın bir yolu var mı?

Şimdiden teşekkürler ve iyi günler :)


Merhaba arsenico42, bir sorguda ekleme yapmayı ve ardından başka bir sorguda LAST_INSERT_ID'yi seçmeyi deneyebilirsiniz, ancak bu yolu öneremem, çünkü LAST_INSERT_ID global veritabanı değişkenini döndüren bir fonksiyondur ve orijinal ekleme işleminiz ile LAST_INSERT_ID seçimi arasında başka bir ekleme (başka bir kullanıcıdan, eşzamanlı olarak çalışan) LAST_INSERT_ID değerini etkileyebilir.

Bu kütüphaneye bağlı değildir, mysql/mariadb böyle çalışır.

Ancak, gerekli değerleri eklemek için veritabanı tarafında bir işlev oluşturmanızı, LAST_INSERT_ID'yi seçmenizi ve bu kimliği işlev değeri olarak döndürmenizi tavsiye edebilirim. gibi görünebilir:

CREATE FUNCTION `import_funds_add`(
        `p_file_name` varchar(64),
        `p_full_path` varchar(2000),
        `p_status` VARCHAR(10),
        `p_error` VARCHAR(2000)
)
RETURNS bigint(20)
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
BEGIN
     declare id bigint;
     INSERT INTO import_funds(`file_name`, `full_path`, `status`, `error`, `creation_date`) 
     VALUES (p_file_name, p_full_path, p_status, p_error, now());
     SELECT LAST_INSERT_ID() INTO id;
     RETURN(id);
END;;

Ve MQL'de sorgu için imleci açmanız gerekir:

qry="SELECT import_funds_add('bonuses.csv','c:\\broker imports\\XXX-FX','NEW','No errors') as last_id";

sonra normal imleçten olduğu gibi değer alın ve imleci kapatın.

Dolayısıyla, bu komutları MQL'de ayrı ayrı kullanmak yerine, bunları DB tarafında işlevde birleştirebilirsiniz.

Bu sadece canlı sistemden bir örnek.

 
Carmine Marrone:

Merhaba elugovoy

Harika bir makale ve harika kütüphaneler.

Örneklerinizi MT5 altında kullanmaya çalışıyorum ancak bu hatayı alıyorum:

2014.12.15 15:44:16.387 MySQL-001 'C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\libraries\MQLMySQL.dll' 64 bit sürüm değil

MT5'i 32-bit env altında mı çalıştırıyorsunuz?

Lütfen bana yardımcı olur musunuz?

Çok teşekkür ederim!

Carmine Marrone.

Merhaba Carmine, x64 sürümünü github üzerindeki kaynaklardan indirebilirsiniz.

https://github.com/elugovoy/MQLMySQL-Project/tree/master/MQLMySQL/x64/Release

 

Hey @Eugeniy Lugovoy, öncelikle topluluğa yaptığınız tüm katkılar için teşekkürler


Burada takıldım kaldım:

"Cannot load 'C:\Users\Admin\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\MQL5\libraries\MQLMySQL.dll'" [126]

"ReadIni' çağrısı yapılamıyor, '..\libraries\MQLMySQL.dll' yüklenmemiş"
 
MARCOS DALCIN ALVES DINIZ:

Hey @Eugeniy Lugovoy, öncelikle topluluğa yaptığınız tüm katkılar için teşekkürler


Burada takıldım kaldım:

"Cannot load 'C:\Users\Admin\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\MQL5\libraries\MQLMySQL.dll'" [126]

"ReadIni' çağrısı yapılamıyor, '..\libraries\MQLMySQL.dll' yüklenmemiş"

MQLMySQL.dll & MQLMySQL.def dosyalarının "C:\Users\Admin\AppData\Roaming\MetaQuotes\Tester\D0E8209F77C8CF37AD8BF550E51FF075\Agent-127.0.0.1-3000\MQL5\libraries\" klasöründe bulunduğundan emin olun.

Gördüğünüz gibi, MQL programlarını Tester modunda çalıştırıyorsanız, libs'e giden yol farklı olacaktır (UAC nedeniyle)

 

çoklu ekleme hatası alınıyor.

Query =         "INSERT INTO `test_table` (id, code, start_date) VALUES (1,\'EURUSD\',\'2014.01.01 00:00:01\');";
Query = Query + "INSERT INTO `test_table` (id, code, start_date) VALUES (2,\'EURJPY\',\'2014.01.02 00:02:00\');";
Query = Query + "INSERT INTO `test_table` (id, code, start_date) VALUES (3,\'USDJPY\',\'2014.01.03 03:00:00\');";
      

Birden fazla deyim hatası: SQL sözdiziminizde bir hata var; MySQL sunucu sürümünüze karşılık gelen kılavuza bakarak doğru sözdizimini ...



 
sql komutunu değiştirmeyi destekliyor mu?
 
Yu Zhang:

çoklu ekleme hata alıyor.

Birden fazla ifade hatası: SQL sözdiziminizde bir hata var; MySQL sunucu sürümünüze karşılık gelen kılavuza bakarak doğru sözdizimini ...



Veritabanı bağlantısı açılırken çoklu deyim istemci bayrağını ayarladığınızdan emin olun.

int ClientFlag = CLIENT_MULTI_STATEMENTS; // Çoklu ifade bayrağını ayarlama
int DB; 

DB = MySqlConnect(Host, User, Password, Database, Port, Socket, ClientFlag); // Veritabanına bağlantı