MyBB.support, le portail francophone de MyBB

Version complète : Problème DB encodage ?
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.

Salut à tous,

lors de l'installationd e Mybb j'ai cette erreur je epsne ça vient de l'encodage de ma DB qui est en UTF 8 (postgresql)

Citation :MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
42601 - ERREUR: erreur de syntaxe sur ou près de « utilisateur » LINE 1: ...d, disporder) VALUES (1, 1, 'Enregistrement de l\'utilisateu... ^
Query:
INSERT INTO mybb_helpdocs (hid, sid, name, description, document, usetranslation, enabled, disporder) VALUES (1, 1, 'Enregistrement de l\'utilisateur', 'Avantages et privilèges de l\'enregistrement.', 'Quelques parties de ce forum peuvent demander une inscription, et de vous connecter. L\'enregistrement est gratuit et prend seulement quelques minutes.

Vous êtes encouragé à vous enregistrer ; une fois enregistré, vous pourrez poster des messages, définir vos préférences, et mettre à jour votre profil.

Les éléments qui demandent un enregistrement sont les abonnements, la gestion des favoris, le changement de style et de thème, l\'accès au bloc-notes personnel et le contact par mail des membres du forum.', 1, 1, 1);
Bizarre cette erreur, c'est la première fois qu'elle est signalée.

J'imagine qu'il y a un problème avec les apostrophes "échappées" ?
Mais je ne saurais dire pourquoi.

Que ta BD soit en utf-8, c'est très normal. A mon avis ça n'a rien à voir avec le problème.
Peut-être est-ce lié au moteur postgresql ?... Peut-être y a-t-il un paramètre quelconque dans php.ini à activer/désactiver ?

N'étant pas un spécialiste de PostgreSQL (ni de SQL en général) je vais laisser à exdiogene le soin de donner une explication.

Toutefois je te signale cette info glanée après une petite recherche Google :
http://www.postgresql.org/docs/current/interactive/runtime-config-compatible.html#GUC-STANDARD-CONFORMING-STRINGS

Notamment ce paragraphe :
Code :
standard_conforming_strings (boolean)

    This controls whether ordinary string literals ('...') treat backslashes literally, as specified in the SQL standard. Beginning in PostgreSQL 9.1, the default is on (prior releases defaulted to off). Applications can check this parameter to determine how string literals will be processed. The presence of this parameter can also be taken as an indication that the escape string syntax (E'...') is supported. Escape string syntax (Section 4.1.2.2) should be used if an application desires backslashes to be treated as escape characters.

C'est peut-être un début de piste ?


Merci pour ta réponse rapide j'ai donc regardé du coté de la conf de postgresql.

j'ai ces options je vais essayer de les modifier.

#array_nulls = on
#backslash_quote = safe_encoding # on, off, or safe_encoding
#default_with_oids = off
#escape_string_warning = on
#lo_compat_privileges = off
#quote_all_identifiers = off
#sql_inheritance = on
#standard_conforming_strings = on
#synchronize_seqscans = on
Celui que j'essaierais en premier c'est :
#backslash_quote : accepte ou pas l’échappement de l'apostrophe "\'".
on = accepte toujours
safe_encoding = permettre seulement si le codage du client n'autorise pas l'ASCII \ dans un caractère multi-octets
off = rejette toujours
cf : http://www.postgresql.org/docs/9.1/static/runtime-config-compatible.html
Essaie de mettre à on.

Ces deux autres options, je ne sais pas trop...

#standard_conforming_strings = off ?...

#escape_string_warning = warn about backslashes in ordinary (non-E) strings
J'ai testé les 3 combinaisons pour backslash_quote ça a pas marché.

Je vais essayer le reste , et chercher ...

Je reviendrai ici vers le milieu de la semaine.

Merci.
D'après mes tests ça vient bien des "\" donc comment faire je suis désespéré personne utilise postgresql UTF8 ?

j'ai essayé de modifier les options mais ça n'a rien donné.
Même avec "standard_conforming_strings" à Off ???

C'est quand même curieux qu'on ne puisse faire accepter \' à postgresql !

Sinon, il faudrait dans tous le fichiers remplacer l'apostrophe échappée (\') par un guillemet simple répété deux fois ('') ce qui 'est pas une mince affaire.
J'ai essayé avec "standard_conforming_strings" à Off ça a pas marché :-'(
C'est une installation en local ou en ligne.
Si local, sous quel environnement ? (XAMPP etc)
Si c'est en ligne, serveur gratuit, payant, dédié ?...

Installation sur serveur dédié (en ligne). (Debian 7 + APACHE2 + postgresql 9.1 + php 5.4 )
du coup j'ai fait comme tu as dit remplacer les '\ par des ''

maintenant j'ai cette erreur:

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
22021 - ERREUR: séquence d'octets invalide pour l'encodage « UTF8 » : 0xe92047
Query:
INSERT INTO mybb_attachtypes (atid, name, mimetype, extension, maxsize, icon) VALUES (12, 'Fichier compress� GZIP', 'application/x-gzip', 'gz', 1024, 'images/attachtypes/tar.gif');
j'ai resolu cette erreur en encodant en UTF8 au lieu de UTF8 sans boom le fichier
du coup c'est bon maintenant mais es ce que j'aurai des problèmes plus tard ? a cause des \
Mince j'ai une nouvelle erreur une fois l'installation faite j'ai installé un template et j'ai voulu le supprimer j'ai eu cette erreur la


MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
22P02 - ERREUR: syntaxe en entrée invalide pour l'entier : « » LINE 3: SET pid='2' WHERE tid='' ^
Query:
UPDATE mybb_themes SET pid='2' WHERE tid=''

Please contact the MyBB Group for support.
C'est vraiment galère ton truc !!!

C'est le monde à l'envers : tous les fichiers sont normalement encodés en UTF-8 sans BOM, c'est ce qui est recommandé, sino à bugue !
Et toi, c'est l'inverse !?

Normalement sur un dédié, tu peux tout paramétrer à ta guise.
Même si je te comprends, il aurait été préférable de faire "digérer" les \' à postgresql que d'adapter les fichiers pour qu'il les digère.

Je crains que le problème ne se repose à chaque nouvelle installation.

Par contre pour le template, je ne saurais dire...

Personnellement je ne connais pas du tout postgresql.

Je pense que ça vaudrait le coup que tu exposes ton problème sur MyBB.com, afin que les développeurs sachent qu'il y a tous ces bugs avec postgresql !

Si tu as la possibilité de l’installer plutôt sur un moteur MySQL, ce serait plus sûr et plus garant d'un fonctionnement correct.
A mon humble avis, les développeurs ont certainement davantage travaillé et testé leur code pour MySQL que pour PostgreSQL, d'où les bugs.
Voici la position du support technique de MyBB.com en 2011 pour les Bases PostGreSql :
Citation : 10-01-2011, 03:47 PM
Dylan M. Support Technician
RE: SMALLINT(1) incompatibile with PostgreSQL
Currently our PostgreSQL support is considered... I guess beta. I know it isn't considered as functional for day to day usage.

De plus les Bases PostGreSql n'ont pas les mêmes caractéristiques pour les TINYINT et les SMALLINT() ce qui cause des ennuis avec MyBB et ses plugins.
 Utilitaire de traduction fourni par Regentronique