[VB.Net][SQL] sqlstate hy000 general error 1267 illegal mix of collations

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Status
Not open for further replies.
Apr 26, 2011
1,315
2
944
26
In my home
Discord
brokeos
Bonjour. J'ai un petit(GROS) soucis concernant une requête SELECT.

La requête est la suivante :

Code:
$response = $bdd->query('SELECT * FROM tbl_projects WHERE project_key="'.$key.'"');

La variable key est défini par une méthode POST envoyé par mon application en VB.Net.

Elle fonctionne parfaitement quand la key n'est pas celle de la première ligne de ma table SQL.

Je m'explique, j'ai mon utilisateur qui sélectionne un élément dans une liste, et celle-ci retourne la key attribué. Lorsque la key est celle de la première colonne de mon application, la requête ne fonctionne pas et me renvois "sqlstate hy000 general error 1267 illegal mix of collations".
Alors j'ai essayé avec une method GET dans mon navigateur, tout fonctionne parfaitement !
Voici le code VB.Net utilisé :

Code:
 Dim reqparm As New Specialized.NameValueCollection
        reqparm.Add("account", account)
        reqparm.Add("password", password)
        reqparm.Add("key", list_projects.SelectedItems(0).ToolTipText)
        Dim cNet As New Net.WebClient
        Dim responsebyte = cNet.UploadValues(server & "del_project.php, "POST", reqparm)
        Dim responsebody = (New System.Text.UTF8Encoding).GetString(responsebyte)
        If responsebody.Contains("deleted") Then
            RefreshListToolStripMenuItem_Click(RefreshListToolStripMenuItem, New EventArgs)
            MsgBox("Deleted !", MsgBoxStyle.Information)
        ElseIf responsebody.Contains("not author") Then
            MsgBox("You're not the author !", MsgBoxStyle.Exclamation)
        Else
            MsgBox(responsebody)
        End If

Voila, c'est vraiment étrange !
 
Apr 26, 2011
1,315
2
944
26
In my home
Discord
brokeos
Déjà fait et toujours le même problème.
Ca vient bien de VB car toutes les requêtes similaires à celle au dessus renvoient la même erreur !
 

Evaelis

La Voix de la Sagesse
V
Ancien staff
Apr 28, 2010
22,949
468
1,699
Valhalla
Lorsque la key est celle de la première colonne de mon application, la requête ne fonctionne pas et me renvois "sqlstate hy000 general error 1267 illegal mix of collations".
Ah j'avais cru que ça venait du php
 
Apr 26, 2011
1,315
2
944
26
In my home
Discord
brokeos
Oui ça vient aussi du PHP, car lorsque que fait en GET (donc via mon navigateur) les requêtes fonctionnent !
 

Evaelis

La Voix de la Sagesse
V
Ancien staff
Apr 28, 2010
22,949
468
1,699
Valhalla
Donc l'erreur vient de l'argument passé par le VB
reqparm.Add("key", list_projects.SelectedItems(0).ToolTipText)
Essaies simplement un .ToString et si ça ne marche pas, convertis le à la main.
 
Apr 26, 2011
1,315
2
944
26
In my home
Discord
brokeos
J'ai vérifié la valeur du tooltiptext, elle est correcte.
J'ai fait avec un .ToString, pareil.
A la main, j'ai toujours la même erreur.
 
Apr 26, 2011
1,315
2
944
26
In my home
Discord
brokeos
La clef de départ est : PvNOlUFK2ef9DesklY4kLmjkhMVKdEZCh
Et avec le ut8_encode, elle devient : PvNOlUFK2ef9DesklY4kLmjkhMVKdEZCh
Vraiment étrange...

---------- Message ajouté à 16h51 ---------- Le message précédent était à 13h44 ----------

Résolu : J'ai fait quelques recherches sur le signe, il s'agit du "sens de lecture", donc j'ai convertis mes fichiers php en utf8 sans bom, et tout fonctionne parfaitement !

Explication pourquoi ça fonctionnais pas pour le 1er de la liste : Car la clef contenais le caractère "BOM" et la requête le lisais !
 
Status
Not open for further replies.