Discussion de l'article "Comment accéder à la base de données MySQL à partir de MQL5 (MQL4)" - page 10

 
mon adresse électronique : 178255721@qq.com
 
 
1982EAcsc :

Bonjour, il semble que MySQL refuse la connexion pour l'utilisateur ODBC sur localhost.

Vous pouvez essayer de consulter StackOverflow : http://stackoverflow.com/questions/23950722/how-to-overcome-error-1045-28000-access-denied-for-user- odbclocalhost-u  ;

how to overcome ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) permanently
how to overcome ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) permanently
  • stackoverflow.com
when am trying to open mysql in windows cmd by typing mysql. the following error is occuring. And then by looking similar queries i somehow got a temporary solution by using and then typing the password, is working...
 

Bonjour Eugeniy Lugovoy.

J'ai utilisé MQLMySQL pour mettre en œuvre les opérations courantes de requête, d'insertion, de mise à jour et de suppression, mais il y a un problème, je ne peux pas insérer le chinois, la requête en chinois est également brouillée, je voudrais vous demander si le processus d'emballage du middleware a défini l'encodage ? J'aimerais savoir si le processus d'emballage des logiciels intermédiaires a défini le code ? Le phénomène est le suivant :

DROP TABLE IF EXISTS `tb_test_pat` ;

CREATE TABLE `tb_test_pat` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `symbol` varchitecture

`symbol` varchar(255) NOT NULL, `start_time` datetime, `tb_test_pat` ; CREATE TABLE

`start_time` datetime NOT NULL,

`end_time` datetime NOT NULL, `trend` int(255)

`trend` int(255), `trend` int(10) NOT NULL, `points` int(10)

`points` int(10) unsigned zerofill NOT NULL, `comments` text CHARacteristic

`comments` text CHARACTER SET utf8,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

Échec de l'insertion du chinois

Erreur : Query was empty query : INSERT INTO tb_test_pat (trend, symbol, start_time, end_time, points, comments) VALUES (1, 'EURUSD ','2014.12.16 13:00 ','2014.12.17 20:00',8,'Test 12')

Insertion en anglais réussie

Succeeded : INSERT INTO tb_test_pat (trend, symbol, start_time, end_time, points, comments) VALUES (1,'EURUSD','2014.12.16 13:00','2014.12.17 20 :00',8,'abc')


À quoi cela sert-il ?

 
Jiayou Hu:

Bonjour Eugeniy Lugovoy.

J'ai utilisé MQLMySQL pour mettre en œuvre les opérations courantes de requête, d'insertion, de mise à jour et de suppression, mais il y a un problème, je ne peux pas insérer le chinois, la requête en chinois est également brouillée, je voudrais vous demander si le processus d'emballage du middleware a défini l'encodage ? J'aimerais savoir si le processus d'emballage des logiciels intermédiaires a défini le code ? Le phénomène est le suivant :

DROP TABLE IF EXISTS `tb_test_pat` ;

CREATE TABLE `tb_test_pat` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `symbol` varchitecture

`symbol` varchar(255) NOT NULL, `start_time` datetime, `tb_test_pat` ; CREATE TABLE

`start_time` datetime NOT NULL,

`end_time` datetime NOT NULL, `trend` int(255)

`trend` int(255), `trend` int(10) NOT NULL, `points` int(10)

`points` int(10) unsigned zerofill NOT NULL, `comments` text CHARacteristic

`comments` text CHARACTER SET utf8,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

Échec de l'insertion du chinois

Erreur : Query was empty query : INSERT INTO tb_test_pat (trend, symbol, start_time, end_time, points, comments) VALUES (1,'EURUSD','2014.12.16 13:00 ','2014.12.17 20:00',8,'Test 12')

Insertion en anglais réussie

Succeeded : INSERT INTO tb_test_pat (trend, symbol, start_time, end_time, points, comments) VALUES (1,'EURUSD','2014.12.16 13:00','2014.12.17 20 :00',8,'abc')


À quoi cela sert-il ?

Vous pouvez essayer d'exécuter la commande suivante après la connexion à MySQL.

SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'

Il est possible que certains de ces paramètres ne soient pas définis en UTF.

 

Une autre solution consiste à exécuter les commandes suivantes une par une après la connexion.

SET NAMES 'utf8' (nom)

SET CHARACTER SET 'utf8' (ensemble de caractères)

SET SESSION collation_connection = 'utf8_general_ci'

 
Eugeniy Lugovoy:

Une autre solution consiste à exécuter les commandes suivantes une par une après la connexion.

SET NAMES 'utf8' (nom)

SET CHARACTER SET 'utf8' (ensemble de caractères)

SET SESSION collation_connection = 'utf8_general_ci'

Cela ne fonctionne toujours pas, mais j'ai trouvé le problème

bool __stdcall MySqlExecute( int pConnection, wchar_t* pQuery)

{

...

char Query[16384] ;

sprintf_s(Query, wcslen(pQuery)+10, "%S", pQuery) ; // Lors de l'exécution de cette ligne, le chinois est rencontré, et Query devient une chaîne vide résultant en un message d'erreur : Error : Query was empty query : UPDATE tb_test_pat SET comments_test_pat SET comments_test_pat SET comments_test_pat SET comments_test_pat SET comments_test_pat SET comments_test_pat SET comments_test_pat SET comments_test_pat test_pat SET comments='Chinese'

Pouvez-vous m'aider à résoudre ce problème ? Je vous remercie de votre aide et vous prie d'agréer, Madame, Monsieur, l'expression de mes salutations distinguées. Je suis en 64 bit

 
Jiayou Hu:

Cela ne fonctionne toujours pas, mais j'ai trouvé le problème

bool __stdcall MySqlExecute( int pConnection, wchar_t* pQuery)

{

...

char Query[16384] ;

sprintf_s(Query, wcslen(pQuery)+10, "%S", pQuery) ; // Lors de l'exécution de cette ligne, le chinois a été rencontré, et Query est devenu une chaîne vide, ce qui a entraîné un message d'erreur : Error : Query was empty query : UPDATE tb_test_pat SET comments='Chinese'. test_pat SET comments='Chinese'

Pouvez-vous m'aider à résoudre ce problème ? Je vous remercie de votre aide et vous prie d'agréer, Madame, Monsieur, l'expression de mes salutations distinguées. Je suis en 64 bit

Oui, "sprintf_s" et "sprintf's" ne supportent pas le chinois. Je vais essayer de vous aider à résoudre ce problème.
 
De plus, UTF-8 ne peut pas être utilisé dans ce cas, mais seulement UTF-16.
 
Eugeniy Lugovoy:
De plus, UTF-8 ne peut pas être utilisé dans ce cas, mais seulement UTF-16 !
Qu'est-ce que cela signifie ? Cela signifie-t-il qu'il faut définir l'encodage de la base de données en UTF-16 ? Ou cela signifie-t-il qu'il faut convertir une chaîne chinoise en UTF-16 ?