Vous n'êtes pas identifié(e).
Ça fonctionne!
C'est bon à savoir que PREPARE n'est pas obligatoire pour les tables temporaires ponctuelles comme j'ai eu besoin de faire.
Merci beaucoup dverite pour les explications
Bonjour à tous,
J'ai une fonction qui contient une table temporaire, donc un "PREPARE" suivi d'un SELECT et de la commande CREATE TEMP TABLE.
J'avais le message suivant à l'exécution:
ERROR: could not determine data type of parameter $2
CONTEXT: SQL statement "PREPARE tmpCas AS
J'ai donc découvert qu'il fallait spécifier les types de paramètre dans une instruction PREPARE, car autrement PostgreSQL les perçoit comme "unknown".
Mon instruction PREPARE est donc passée de
PREPARE tmpCas AS
à
PREPARE tmpCas(integer, character varying, character varying, integer, character varying, integer, character varying, character varying, integer, integer, character varying) AS
Maintenant, mon erreur n'est plus la même. C'est maintenant :
ERROR: operator does not exist: timestamp without time zone >= character varying
LINE 71: stirq.Cheminement.datCheminement BETWEEN $3 AND $4 AND
Lorsque j'arrive à la ligne en question, je remarque PostgreSQL perçoit $3 et $4 comme le troisième et le quatrième paramètre de mon PREPARE (donc character varying et integer), alors que ma fonction a comme troisième et quatrième paramètre des timestamp (intervalle de date pour ma requête).
Lorsque je ne suis pas dans un prepare, c'est parfait. Par contre, dans un PREPARE, je n'arrive plus à accéder aux paramètres de ma fonction.
J'ai essayé d'ajouter ceci au début de ma fonction :
DECLARE
ldatfrom TIMESTAMP := $3;
ldatto TIMESTAMP := $4;
.. et d'utiliser ldatfrom et ldatto dans le WHERE du PREPARE... négatif.
Quelqu'un a une idée?
Finalement, voici le code complet de ma fonction:
CREATE OR REPLACE FUNCTION stirq.qrycastempscoutstyperpt(
pvintregionid INT,
pvstrregionnom VARCHAR,
pvdatfrom timestamp without time zone,
pvdatto timestamp without time zone,
pvstrlangue VARCHAR)
RETURNS TABLE(intcasid integer, strnodossier character varying, strconseillernom character varying, intlocalisationid integer, strlocalisationnom character varying, intregionid integer, strregionnom character varying, stractivitenom character varying, inttemps integer, intcouts integer, strdossieretatnom character varying) AS
$BODY$
/*
DECLARE
ldatfrom TIMESTAMP := $3;
ldatto TIMESTAMP := $4;
*/
BEGIN
PREPARE tmpCas(integer, character varying, character varying, integer, character varying, integer, character varying, character varying, integer, integer, character varying) AS
SELECT Cas.intCasId AS intCasIdGlobal,
Cas.strNoDossier,
Users.strUserFirstName || ' ' || Users.strUserLastName AS strConseillerNom,
Localisation.intLocalisationId,
CASE $5
WHEN 'fr' THEN Localisation.strLocalisationNomFr
WHEN 'en' THEN Localisation.strLocalisationNomEn
END AS strLocalisationNom,
Region.intRegionId,
CASE $5
WHEN 'fr' THEN Region.strRegionNomFr
WHEN 'en' THEN Region.strRegionNomEn
END AS strRegionNom,
CASE $5
WHEN 'fr' THEN ActiviteNom.strActiviteNomFr
WHEN 'en' THEN ActiviteNom.strActiviteNomEn
END AS strActiviteNom,
Cheminement.intTemps,
Cheminement.intCouts,
CASE $5
WHEN 'fr' THEN DossierEtat.strDossierEtatAbrFr
WHEN 'en' THEN DossierEtat.strDossierEtatAbrEn
END AS strDossierEtatNom
FROM stirq.Cas
INNER JOIN stirq.DossierEtat ON
stirq.Cas.intDossierEtatId = stirq.DossierEtat.intDossierEtatId
INNER JOIN stirq.Localisation ON
stirq.Cas.intLocalisationId = stirq.Localisation.intLocalisationId
INNER JOIN stirq.Region ON
stirq.Localisation.intRegionId = stirq.Region.intRegionId
INNER JOIN stirq.Intervention ON
stirq.Cas.intCasId = stirq.Intervention.intCasId
INNER JOIN stirq.ActiviteNom ON
stirq.Intervention.intActiviteNomId = stirq.ActiviteNom.intActiviteNomId
INNER JOIN stirq.Cheminement ON
stirq.Intervention.intInterventionId = stirq.Cheminement.intInterventionId
INNER JOIN
(SELECT stirq.Cas.intCasId,
MAX(intCheminementId) AS intLastCheminementId
FROM stirq.Cheminement
INNER JOIN stirq.Intervention ON
stirq.Cheminement.intInterventionId = stirq.Intervention.intInterventionId
INNER JOIN stirq.Cas ON
stirq.Intervention.intCasId = stirq.Cas.intCasId
INNER JOIN stirq.Localisation ON
stirq.Cas.intLocalisationId = stirq.Localisation.intLocalisationId
INNER JOIN stirq.Region ON
stirq.Localisation.intRegionId = stirq.Region.intRegionId
WHERE
stirq.Cheminement.datCheminement BETWEEN $3 AND $4 AND
Region.intRegionId = $1
GROUP BY Cas.intCasId
) AS vwsLastCheminementCas ON
Cas.intCasId = vwsLastCheminementCas.intCasId
INNER JOIN (
SELECT Cheminement.intCheminementId,
Cheminement.intConseiller1Id
FROM stirq.Cheminement
INNER JOIN stirq.Intervention ON
stirq.Cheminement.intInterventionId = stirq.Intervention.intInterventionId
INNER JOIN stirq.Cas ON
stirq.Intervention.intCasId = stirq.Cas.intCasId
INNER JOIN stirq.Localisation ON
stirq.Cas.intLocalisationId = stirq.Localisation.intLocalisationId
INNER JOIN stirq.Region ON
stirq.Localisation.intRegionId = stirq.Region.intRegionId
WHERE
stirq.Cheminement.datCheminement BETWEEN $3 AND $4 AND
stirq.Region.intRegionId = $1
) AS vwsLastConseillerCas ON
vwsLastCheminementCas.intLastCheminementId = vwsLastConseillerCas.intCheminementId
INNER JOIN stirq.Users ON
vwsLastConseillerCas.intConseiller1Id = stirq.Users.intUserId
WHERE
Cheminement.datCheminement BETWEEN $3 AND $4 AND
Region.intRegionId = $1
ORDER BY Cas.strNoDossier, ActiviteNom.intOrder;
CREATE TEMP TABLE tmpCas AS EXECUTE tmpCas;
INSERT INTO tmpCas
SELECT 0,
NULL,
NULL,
0,
NULL,
$1,
$2::VARCHAR,
CASE $5
WHEN 'fr' THEN stirq.ActiviteNom.strActiviteNomFr
WHEN 'en' THEN stirq.ActiviteNom.strActiviteNomEn
END AS strActiviteNom,
NULL,
NULL,
NULL
FROM stirq.ActiviteNom
WHERE intActiviteTypeId = 4;
RETURN QUERY SELECT * FROM tmpCas;
DEALLOCATE tmpCas;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION stirq.qrycastempscoutstyperpt(integer, character varying, timestamp without time zone, timestamp without time zone, character varying) OWNER TO cxm526;
Merci !
Encore une fois j'avais lu trop vite!
Discussion close!
Ah! C'est pas LANGUAGE sql qu'il faut pour la fonction , c'est plpgsql.
Exactement!! J'ai changé le language et ajouté les BEGIN et END; et tout fonctionne à merveille...
Désolé les gars, c'était mon erreur.
Merci beaucoup pour votre support. C'est grandement apprécié.
Pas bizarre du tout. La table temporaire existe tout le temps de la session (donc tant qu'il n'y a pas déconnexion de l'éditeur de requête dans votre cas).
Je comprend, mais je ne me suis pas déconnecté?! Normalement elle aurait dûe exister encore puisque je n'ai pas fermer l'éditeur de requête, non? Le message que j'ai est comme si la table n'existait pas, alors qu'elle devrait logiquement exister encore si on prend en considération vos explications antérieures.
Merci beaucoup
Voici la fonction au complet :
CREATE OR REPLACE FUNCTION stirq.qryCasTempsCoutsTypeRpt(
pvintRegionId INT,
pvstrRegionNom VARCHAR(100),
pvdatFrom TIMESTAMP,
pvdatTo TIMESTAMP,
pvstrLangue VARCHAR(10)
)
RETURNS TABLE(
intCasId INT,
strNoDossier VARCHAR(50),
strConseillerNom VARCHAR(255),
intLocalisationId INT,
strLocalisationNom VARCHAR(255),
intRegionId INT,
strRegionNom VARCHAR(255),
strActiviteNom VARCHAR(100),
intTemps INT,
intCouts INT,
strDossierEtatNom VARCHAR(255)
) AS
$BODY$
PREPARE t_cas AS
SELECT Cas.intCasId AS intCasIdGlobal,
Cas.strNoDossier,
Users.strUserFirstName || ' ' || Users.strUserLastName AS strConseillerNom,
Localisation.intLocalisationId,
CASE $5
WHEN 'fr' THEN Localisation.strLocalisationNomFr
WHEN 'en' THEN Localisation.strLocalisationNomEn
END AS strLocalisationNom,
Region.intRegionId,
CASE $5
WHEN 'fr' THEN Region.strRegionNomFr
WHEN 'en' THEN Region.strRegionNomEn
END AS strRegionNom,
CASE $5
WHEN 'fr' THEN ActiviteNom.strActiviteNomFr
WHEN 'en' THEN ActiviteNom.strActiviteNomEn
END AS strActiviteNom,
Cheminement.intTemps,
Cheminement.intCouts,
CASE $5
WHEN 'fr' THEN DossierEtat.strDossierEtatAbrFr
WHEN 'en' THEN DossierEtat.strDossierEtatAbrEn
END AS strDossierEtatNom
FROM stirq.Cas
INNER JOIN stirq.DossierEtat ON
stirq.Cas.intDossierEtatId = stirq.DossierEtat.intDossierEtatId
INNER JOIN stirq.Localisation ON
stirq.Cas.intLocalisationId = stirq.Localisation.intLocalisationId
INNER JOIN stirq.Region ON
stirq.Localisation.intRegionId = stirq.Region.intRegionId
INNER JOIN stirq.Intervention ON
stirq.Cas.intCasId = stirq.Intervention.intCasId
INNER JOIN stirq.ActiviteNom ON
stirq.Intervention.intActiviteNomId = stirq.ActiviteNom.intActiviteNomId
INNER JOIN stirq.Cheminement ON
stirq.Intervention.intInterventionId = stirq.Cheminement.intInterventionId
INNER JOIN
(SELECT stirq.Cas.intCasId,
MAX(intCheminementId) AS intLastCheminementId
FROM stirq.Cheminement
INNER JOIN stirq.Intervention ON
stirq.Cheminement.intInterventionId = stirq.Intervention.intInterventionId
INNER JOIN stirq.Cas ON
stirq.Intervention.intCasId = stirq.Cas.intCasId
INNER JOIN stirq.Localisation ON
stirq.Cas.intLocalisationId = stirq.Localisation.intLocalisationId
INNER JOIN stirq.Region ON
stirq.Localisation.intRegionId = stirq.Region.intRegionId
WHERE
stirq.Cheminement.datCheminement BETWEEN $3 AND $4 AND
Region.intRegionId = $1
GROUP BY Cas.intCasId
) AS vwsLastCheminementCas ON
Cas.intCasId = vwsLastCheminementCas.intCasId
INNER JOIN (
SELECT Cheminement.intCheminementId,
Cheminement.intConseiller1Id
FROM stirq.Cheminement
INNER JOIN stirq.Intervention ON
stirq.Cheminement.intInterventionId = stirq.Intervention.intInterventionId
INNER JOIN stirq.Cas ON
stirq.Intervention.intCasId = stirq.Cas.intCasId
INNER JOIN stirq.Localisation ON
stirq.Cas.intLocalisationId = stirq.Localisation.intLocalisationId
INNER JOIN stirq.Region ON
stirq.Localisation.intRegionId = stirq.Region.intRegionId
WHERE
stirq.Cheminement.datCheminement BETWEEN $3 AND $4 AND
stirq.Region.intRegionId = $1
) AS vwsLastConseillerCas ON
vwsLastCheminementCas.intLastCheminementId = vwsLastConseillerCas.intCheminementId
INNER JOIN stirq.Users ON
vwsLastConseillerCas.intConseiller1Id = stirq.Users.intUserId
WHERE
Cheminement.datCheminement BETWEEN $3 AND $4 AND
Region.intRegionId = $1
ORDER BY Cas.strNoDossier, ActiviteNom.intOrder;
CREATE TEMP TABLE t_cas AS EXECUTE t_cas;
INSERT INTO t_cas
SELECT 0,
NULL,
NULL,
0,
NULL,
$1,
$2,
CASE $5
WHEN 'fr' THEN stirq.ActiviteNom.strActiviteNomFr
WHEN 'en' THEN stirq.ActiviteNom.strActiviteNomEn
END AS strActiviteNom,
NULL,
NULL,
NULL
FROM stirq.ActiviteNom
WHERE intActiviteTypeId = 4;
SELECT * FROM t_cas;
$BODY$
LANGUAGE sql VOLATILE
COST 100;
Message d'erreur :
ERROR: relation "t_cas" does not exist
LINE 140: INSERT INTO t_cas
^
********** Error **********
ERROR: relation "t_cas" does not exist
SQL state: 42P01
Character: 3683
Je pense que j'ai mis le doigt sur le problème, mais je ne comprend pas pourquoi PostgreSQL agit ainsi.
J'ai testé le code suivant dans pgAdmin :
CREATE TEMP TABLE temptest(col INTEGER);
INSERT INTO temptest VALUES (1);
INSERT INTO temptest VALUES (2);
INSERT INTO temptest VALUES (3);
SELECT * FROM temptest;
En appuyant sur Execute Query, je vois le résultat de la requête, donc :
1
2
3
Si je réappuie sur Execute Query, j'ai le message suivant comme mon problème initial:
ERROR: relation "temptest" already exists
********** Error **********
ERROR: relation "temptest" already exists
SQL state: 42P07
Vraiment bizzare... quelqu'un a une idée??
La fonction n'est même pas encore créée, je ne réussi pas à la faire compiler.
Voici le code d'entête de ma fonction :
CREATE OR REPLACE FUNCTION stirq.qryCasTempsCoutsTypeRpt(
pvintRegionId INT,
pvstrRegionNom VARCHAR(100),
pvdatFrom TIMESTAMP,
pvdatTo TIMESTAMP,
pvstrLangue VARCHAR(10)
)
RETURNS TABLE(
intCasId INT,
strNoDossier VARCHAR(50),
strConseillerNom VARCHAR(255),
intLocalisationId INT,
strLocalisationNom VARCHAR(255),
intRegionId INT,
strRegionNom VARCHAR(255),
strActiviteNom VARCHAR(100),
intTemps INT,
intCouts INT,
strDossierEtatNom VARCHAR(255)
) AS
$BODY$
[...]
Je n'ai qu'un seul schéma dans cette base de données, et il est nommé "stirq". J'ai supprimé le schéma public.
Si je roule SHOW search_path, j'ai le résultat ""$user",public"
Merci
J'ai enlevé le point virgule et c'est la même chose.
Est-ce que ça pourrait avoir un lien avec mon schéma?
J'ai toutefois tenté de spécifier stirq. avant t_cas et j'ai le même problème..
Ce serait effectivement très logique! Par contre, j'avais essayé d'enlever ON COMMIT DROP et de faire le drop moi-même à la fin de la fonction... même résultat.
L'instruction CREATE était ainsi :
CREATE TEMP TABLE t_cas WITH (OIDS) AS
EXECUTE t_cas;
.. suivi de l'instruction INSERT
J'ai ajouté le détail de mon INSERT dans le post #4.
Non, la seule erreur que le compilateur me donne est le t_cas does not exist.
En fait, l'instruction INSERT suit immédiatement le EXECUTE. Les [...] sont inutiles... désolé
Voici le code de la fonction:
PREPARE t_cas AS
SELECT Cas.intCasId,
Cas.strNoDossier,
Users.strUserFirstName || ' ' || Users.strUserLastName AS strConseillerNom,
Localisation.intLocalisationId,
CASE $5
WHEN 'fr' THEN Localisation.strLocalisationNomFr
WHEN 'en' THEN Localisation.strLocalisationNomEn
END AS strLocalisationNom,
Region.intRegionId,
CASE $5
WHEN 'fr' THEN Region.strRegionNomFr
WHEN 'en' THEN Region.strRegionNomEn
END AS strRegionNom,
CASE $5
WHEN 'fr' THEN ActiviteNom.strActiviteNomFr
WHEN 'en' THEN ActiviteNom.strActiviteNomEn
END AS strActiviteNom,
Cheminement.intTemps,
Cheminement.intCouts,
CASE $5
WHEN 'fr' THEN DossierEtat.strDossierEtatAbrFr
WHEN 'en' THEN DossierEtat.strDossierEtatAbrEn
END AS strDossierEtatNom
FROM stirq.Cas
INNER JOIN stirq.DossierEtat ON
stirq.Cas.intDossierEtatId = stirq.DossierEtat.intDossierEtatId
INNER JOIN stirq.Localisation ON
stirq.Cas.intLocalisationId = stirq.Localisation.intLocalisationId
INNER JOIN stirq.Region ON
stirq.Localisation.intRegionId = stirq.Region.intRegionId
INNER JOIN stirq.Intervention ON
stirq.Cas.intCasId = stirq.Intervention.intCasId
INNER JOIN stirq.ActiviteNom ON
stirq.Intervention.intActiviteNomId = stirq.ActiviteNom.intActiviteNomId
INNER JOIN stirq.Cheminement ON
stirq.Intervention.intInterventionId = stirq.Cheminement.intInterventionId
WHERE
Cheminement.datCheminement BETWEEN $3 AND $4 AND
Region.intRegionId = $1
ORDER BY Cas.strNoDossier, ActiviteNom.intOrder;
CREATE TEMP TABLE t_cas WITH (OIDS) ON COMMIT DROP AS
EXECUTE t_cas;
INSERT INTO t_cas
SELECT 0,
NULL,
NULL,
0,
NULL,
$1,
$2,
CASE $5
WHEN 'fr' THEN stirq.ActiviteNom.strActiviteNomFr
WHEN 'en' THEN stirq.ActiviteNom.strActiviteNomEn
END AS strActiviteNom,
NULL,
NULL,
NULL
FROM stirq.ActiviteNom
WHERE intActiviteTypeId = 4;
SELECT * FROM t_cas;
J'ai le message suivant :
ERROR: relation "t_cas" does not exist
LINE 156: INSERT INTO t_cas(intCasId, strNoDossier, strConseillerNom,...
J'ai suivi les instructions à la page 917 dans le manuel de PostgreSQL 9.0.3 (CREATE TABLE AS)
Merci!
D'accord. J'ai fait plusieurs tests ce matin avec cette commande mais lorsque j'arrivais au INSERT, PostgreSQL me disait que le nom de ma table temporaire n'existait pas (relation does not exist).
Faut-il mettre un prefix comme $ pour les paramètres?
Merci !
Bonjour à tous,
Dans certaines requêtes MSSQL, nous avons utilisé des tables temporaires pour faire des traitements spécifiques. Par exemple :
DECLARE @Cas TABLE
(intCasId INT,
strNoDossier VARCHAR(50),
strConseillerNom VARCHAR(255),
intLocalisationId INT,
strLocalisationNom VARCHAR(255),
intRegionId INT,
strRegionNom VARCHAR(255),
strActiviteNom VARCHAR(100),
intTemps INT,
intCouts INT,
strDossierEtatNom VARCHAR(255)
)
INSERT INTO @Cas(intCasId, strNoDossier, strConseillerNom, intLocalisationId, strLocalisationNom, intRegionId, strRegionNom, strActiviteNom, intTemps, intCouts, strDossierEtatNom)
[...] une requête SELECT qui alimente l'instruction INSERT ci-dessus
Plusieurs autres traitements suivent, et à la fin je fais SELECT * FROM @Cas, et c'est le "resultset" qui est envoyé à mon rapport (JasperSoft iReport).
J'aimerais reproduire la même chose en PostgreSQL. J'ai lu sur les tables temporaires, mais j'aimerais savoir si c'est possible de déclarer une table "virtuelle" pour l'exécution de la fonction seulement?
Merci beaucoup
Super! Toujours aussi précis dans vos instructions.
Merci beaucoup gleu
Bonjour à tous,
Je suis présentement en train de réécrire une multitude de procédures stockées et fonctions MSSQL et DB2 vers PostgreSQL, et je rencontre un irritant à propos duquel j'aurais une question.
Est-il possible de définir un schéma par défaut pour une fonction?
Dans notre équipe, le schéma se nomme toujours "stirq", donc j'aimerais être en mesure de ne pas toujours devoir spécifier stirq.MA_TABLE dans toutes mes requêtes... J'ai des fonctions qui ont plus de 1000 lignes donc il est très embarassant de devoir faire plusieurs "replace all" pour mettre "stirq." devant chaque table.
Merci beaucoup pour votre aide habituelle
Exactement. Je suis allé voir dans mes configurations Windows XP et j'avais Français (Belgique) alors que je suis au Canada. Ceci devait être une erreur.
Par contre, après un redémarrage de mon laptop pour être en Français (Canada), le problème est toujours le même.
J'ai donc décidé d'installer l'outil de conversion sur le serveur Windows 2008 Server de PostgreSQL qui lui est en English (Canada). Devinez-quoi, les accents et les autres caractères spéciaux ont suivi parfaitement.
Je n'y comprend plus rien... Pourtant, dans ma tête, l'anglais n'aime pas les accents, alors que le Français en utilise très fréquemment.
Quelqu'un a une idée ou des hypothèses?
Merci
Une chose que j'aimerais savoir est comment faire pour ajouter des collations et character set supplémentaires à PostgreSQL?
Présentement, j'ai seulement C, English_Canada.1252 et POSIX.
J'aimerais pourvoir y retrouver en_CA.UTF-8
Merci beaucoup
Donc, si j'ai bien compris, il faudrait que mon pgAdmin (client_encoding) et que mon server_encoding (PostgreSQL) aient le même encoding pour éviter tout problème de ce genre.
Présentement, j'ai UNICODE comme client_encoding et UTF8 comme server_encoding.
J'ai écris au fabricant du logiciel. Je vous tiens au courant des développements.
ESF Database Migration Toolkit
J'ai pourtant sélectionné UTF-8, j'ai également essayé SQL_ASCII et WIN.1252
Toujours la même chose.
Affiché par pgAdmin quand je vais dans "View Data".
Lorsque je vais en console, même le contenu de \? est incorrect.
Exemple :
exÚcute SQL COPY avec le flux de donnÚes dirigÚ vers l'h¶te client
J'ai remarqué que dans postgresql.conf, ma configuration de base pour les lc_ est la suivante :
# These settings are initialized by initdb, but they can be changed.
lc_messages = 'English_Canada.1252' # locale for system error message
# strings
lc_monetary = 'English_Canada.1252' # locale for monetary formatting
lc_numeric = 'English_Canada.1252' # locale for number formatting
lc_time = 'English_Canada.1252' # locale for time formatting
J'aimerais la changer pour en_CA.UTF-8 mais je n'y arrive pas. Lorsque je tente de redémarrer le service, ce dernier échoue et ne démarre pas.
Merci!
Bonjour gleu,
la commande SHOW client_encoding; retourne UNICODE.
J'utilse pgAdminIII version 1.12.2
Merci!
Bonjour à tous,
Je suis présentement en train de convertir des bases de données de MS SQL 2008 vers PostgreSQL, et je rencontre un problème en ce qui concerne l'importation des caractères spéciaux auquel j'ai de la difficulté à résoudre.
MS SQL Server 2008
Collation : SQL_Latin1_General_CP0850_CI_AI
PostgreSQL 9.0.3
Lorsque je créé ma base de données vide pour ensuite transférer mes données, elle a les paramètres suivants :
CREATE DATABASE maBase
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'English_Canada.1252'
LC_CTYPE = 'English_Canada.1252'
CONNECTION LIMIT = -1;
J'ai également testé avec la configuration ci-dessous:
CREATE DATABASE maBase
WITH OWNER = postgres
ENCODING = 'WIN1252'
TABLESPACE = pg_default
LC_COLLATE = 'English_Canada.1252'
LC_CTYPE = 'English_Canada.1252'
CONNECTION LIMIT = -1;
Dans la liste de collations, je n'ai 'English_Canada.1252', 'C' et 'POSIX'
Dans tous les cas, j'ai des résultats comme celui-ci dans ma base PostgreSQL :
- "GÚrer les conflits en milieu de travail"
- "ActivitÚs de consolidation d'Úquipe"
- etc.
Avez-vous une idée de solution pour ce problème?
Merci beaucoup!