Vous n'êtes pas identifié(e).
Bonjour,
Pour info, il me semble qu'avec une SEQUENCE, la valeur créer est perdue si l'insertion échoue.
Exemple :
nextval = 10
Tentative d'INSERT avec 10
nextval passe à 11 même si l'INSERT échoue
Et l'INSERT suivant sera tenté avec 12
Si qlq a une expérience avec la combinaison :
- Windows
- Apache
- HTTP/2
- PHP
- PostgreSQL
Ce serait cool de partager.
Merci d'avance.
Mais il faut quand même certains fichiers/modules pour le support PostgreSQL, pour par exemple le support des LargeObject...pgsqlLOBOpen ?
Bonjour,
À priori vous n'avez vraiment besoin de qu'une lib php avec le support de postgres venant de l'installeur postgres (et encore, la libpq a une très bonne compatibilité ascendante vous pourriez utiliser n'importe quelle. version). Tout le reste est spécifique à apache2 et non postgres, vous pouvez donc l'installer depuis n'importe quelle source dédiée apache2 plutôt que postgres.
Désolé mais c'est pas très clair...
Bonjour,
Pour mon site j'utilise :
- Windows 11 Pro
- PostgreSQL 15.2
- Package Apache/PHP qui vient du StackBuilder (de l'installation PG) avec les versions Apache 2.4.53 et PHP/5.5.38
Est-ce que http/2 est possible avec ce que j'utilise ?
Dans les dossiers de Apache je ne vois pas de mod_http2 donc j'imagine que la réponse est non.
Mais comment faire alors ?
Peut-on y ajouter le mod_http2 et si oui comment ?
Ou quel autre package Package Apache/PHP pour PostgreSQL faut-il utilisé pour le support http/2 ?
Merci d'avance.
Si vous avez utilisé les options par défaut lors de l'installation les logs de PG se trouvent dans "C:\Program Files\PostgreSQL\15\data\log" et regardez le contenu du fichier le plus récent. Son doit être du genre "postgresql-2023-03-24_090156.log"
Bonjour,
Je suis curieux...
Pourquoi migrer vers PG13 et pas PG15 directement ?
Si le service s'arrête c'est qu'il y a un soucis de configuration...voir les logs
Si c'est une instance vierge, à la limite vous pouvez désinstaller et réinstaller.
L'état du service PostgreSQL n'est pas "en cours" donc pas démarré.
Reste à savoir pourquoi...
Avez-vous configuré le pare-feu pour autoriser PostgreSQL ?
Bonjour,
Il est quand vraiment dommage qu'il n'y ai pas la possibilité de réencoder les mots de passe en scram-sha...
Un moyen de ne pas incrémenter si échec d'INSERT ?
Bonjour,
Il suffit de choisir le type de colonne SERIAL pour la colonne ID et PostgreSQL créera une séquence.
Dans le fichier CSV, ne pas prendre la colonne ID, PostgreSQL se charge de tout.
A chaque insertion dans la table ID sera auto-incrémenté.
Trop cool, ça fonctionne.
Grand merci.
Pas de PK...
Bonjour,
Je cherche les doublons avec ce query
WITH CTE AS (SELECT art_id,
prix,
maj,
ROW_NUMBER() OVER(PARTITION BY art_id,
maj
ORDER BY maj,prix DESC) AS DuplicateCount
FROM historique_prix
SELECT * FROM CTE WHERE DuplicateCount > 1
Et voici le résultat
|art_id|prix|maj|duplicatecount|
|------|----|---|--------------|
|6739|94.00|2021-09-01 15:54:47.000|1|
|6739|88.00|2021-09-01 15:54:47.000|2|
|6739|95.00|2021-09-20 22:29:47.000|1|
|6739|96.00|2021-09-30 10:29:40.000|1|
|6739|93.00|2021-10-04 09:26:22.000|1|
|6739|91.00|2021-10-04 09:26:22.000|2|
|6739|92.00|2021-10-05 17:23:03.000|1|
|6739|93.00|2021-10-08 10:50:33.000|1|
|6739|87.00|2021-10-11 10:27:02.000|1|
|6739|88.00|2021-10-15 08:59:32.000|1|
|6739|87.00|2021-10-15 10:29:06.000|1|
|6739|84.00|2021-10-25 10:28:42.000|1|
|6739|85.00|2021-10-26 10:28:14.000|1|
|6739|84.00|2021-10-29 08:58:25.000|1|
|6739|82.00|2021-11-01 09:32:21.000|1|
|6739|83.00|2021-11-12 12:52:48.000|1|
|6739|84.00|2021-11-17 09:49:58.000|1|
|6739|85.00|2021-11-23 10:04:03.000|1|
|6739|84.00|2021-11-30 11:34:21.000|1|
|6739|85.00|2021-12-20 11:26:21.000|1|
|6739|84.00|2021-12-24 13:42:04.000|1|
|6739|83.00|2022-01-13 10:44:55.000|1|
|6739|86.00|2022-01-17 11:16:58.000|1|
|6739|89.00|2022-01-18 16:33:24.000|1|
|6739|86.00|2022-01-18 16:33:24.000|2|
|6739|90.00|2022-01-18 16:35:24.000|1|
|6739|86.00|2022-01-18 16:35:24.000|2|
|6739|91.00|2022-01-18 16:38:40.000|1|
|6739|90.00|2022-01-18 16:38:40.000|2|
|6739|93.00|2022-01-27 10:57:11.000|1|
|6739|88.00|2022-01-29 14:56:44.000|1|
|6739|87.00|2022-02-01 10:56:47.000|1|
|6739|86.00|2022-02-04 09:49:44.000|1|
|6739|87.00|2022-02-24 11:04:31.000|1|
|6739|88.00|2022-02-25 12:38:54.000|1|
|6739|89.00|2022-03-02 13:37:14.000|1|
|6739|90.00|2022-03-07 14:02:54.000|1|
|6739|89.00|2022-03-10 10:13:31.000|1|
|6739|90.00|2022-03-14 09:40:04.000|1|
|6739|89.00|2022-03-15 11:10:32.000|1|
|6739|90.00|2022-03-28 09:49:49.000|1|
|6739|89.00|2022-03-29 11:50:02.000|1|
|6739|88.00|2022-03-30 11:49:29.000|1|
|6739|89.00|2022-04-01 11:05:08.000|1|
|6739|86.00|2022-04-04 10:58:34.000|1|
|6739|87.00|2022-04-05 10:58:35.000|1|
|6739|88.00|2022-04-08 09:37:39.000|1|
|6739|87.00|2022-04-11 09:37:46.000|1|
|6739|88.00|2022-04-13 09:37:37.000|1|
|6739|87.00|2022-04-14 16:47:16.000|1|
|6739|85.00|2022-04-19 10:06:22.000|1|
Mais si j'essaie de supprimer les doublons, j'ai une erreur.
WITH CTE AS (SELECT art_id,
prix,
maj,
ROW_NUMBER() OVER(PARTITION BY art_id,
maj
ORDER BY maj,prix DESC) AS DuplicateCount
FROM historique_prix WHERE art_id = 6739)
DELETE FROM CTE WHERE DuplicateCount > 1
Et voici l'erreur.
SQL Error [42P01]: ERREUR: la relation « cte » n'existe pas
Position : 300
Error position: line: 9 pos: 299
Je ne comprends pas...
A l'aide svp.
Merci d'avance.
Bonjour,
Je te mets sur la voie...
Ta requête cherche les sociétés dont le nom est EGAL à 'Bike'
Je te laisse réfléchir.
Une piste...
Comme il y a un espace entre Program et Files
Est-ce le nom du chemin complet est bien entre guillemets qlq part...
J'ai trouvé...
Voici la ligne GRANT correcte.
EXECUTE 'GRANT SELECT ON LARGE OBJECT ' || oid_data.id || ' TO ' || user_for_grant;
Parfait ça fonctionne.
Merci.
Mais il faut GRANT individuellement pour chaque oid
J'essaie de faire une petite fonction pour le faire sur tous les oid d'un coup mais j'ai une erreur de syntaxe bizarre
--------------- SQL ---------------
CREATE OR REPLACE FUNCTION public.grant_select_oid (
user_for_grant text
)
RETURNS void AS
$body$
DECLARE
oid_data RECORD;
BEGIN
FOR oid_data IN
SELECT fichier_data AS "id"
FROM articles_fichiers
WHERE fichier_data IS NOT NULL
UNION
SELECT fichier_data_mini AS "id"
FROM articles_fichiers
WHERE fichier_data_mini IS NOT NULL
LIMIT 10
LOOP
GRANT SELECT ON LARGE OBJECT oid_data.id TO user_for_grant;
-- RAISE NOTICE 'user = %, oid = %', user_for_grant, oid_data.id;
END LOOP;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
PARALLEL UNSAFE
COST 100;
---------- MESSAGE D'ERREUR --------
ERREUR: erreur de syntaxe sur ou près de « oid_data »
LINE 15: GRANT SELECT ON LARGE OBJECT oid_data.id TO user_for_grant...
^
Une idée ?
Merci d'avance.
Bonjour,
Mais je suis obligé d'activer l'option lo_compat_privileges pour qu'un utilisateur "limité" puise lire les données des "Large Objects". Malheureusement l'activation de cette option ignore les restrictions d'accès en lecture ET en écriture...
L'utilisateur a pourtant le droit de lire colonnes oid correspondantes mais cela ne suffit pas.
J'imagine qu'il faut lui donner le droit de lire les colonnes correspondantes aux données des "Large Objects" dans les tables système.
Cela me permettrais de ne pas devoir activer cette option et autoriser la lecture seule des "Large Objects" des mais je ne vois pas comment faire...
Merci d'avance.
Bonjour,
Perso j'utilise EMS SQL Manager for PostgreSQL en version Lite et cela donne le nom (donné lors de la création de la fonction/procédure) et le type de chaque paramètre.
ça ne fonctionnait pas...
Voici ce que j'ai fais :
- déinstallation de PG14
- installation PG14
- avant de me connecter j'ai remplacé le scram-sha-256 par md5 dans le fichier pg_hba.conf
- restoration de mon backup de cluster PG14 (fait avec pg_dump_all)
Et la tout fonctionne parfaitement.
Dans le fichier pg_hba.conf, il y a ceci.
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all scram-sha-256
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all all ::1/128 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all scram-sha-256
host replication all 127.0.0.1/32 scram-sha-256
host replication all ::1/128 scram-sha-256
Sans l'option -W, psql va cherche le mot de passe dans le fichier %appdata%/postgresql/pgpass.conf
J'ai vérifié dans le fichier, le mot de passe est correct...Et j'ai utiliser l'option -W pour forcer la demande.
Je ne comprends pas ce qui se passe ...
Avec PG13 le mot de passe était en md5 par défaut et avec PG14 c'est scram-sha-256... Ce serait lié à mon problème ?
Bonjour,
J'ai un serveur sous Windows 10 Pro avec un serveur de production PG13 qui fonctionne nickel. J'ai fais un backup (pg_dumpall) du cluster pour faire des tests sous PG14.
J'installe PG14 et j'essaie de faire un restore avec psql.
Impossible de m'y connecter...
psql -U postgres -p 5433 -W
Mot de passe :
psql: erreur : la connexion au serveur sur « localhost » (::1), port 5433 a échoué : FATAL: authentification par mot de passe échouée pour l'utilisateur « postgres »
Je fais toujours comme cela pour tester les nouvelles versions...cela a toujours fonctionner...
Je n'ai touché à aucun fichier de configuration après l'installation et suis en direct sur le serveur.
Une idée ?
Merci d'avance.