Vous n'êtes pas identifié(e).
Pages : 1
Bonjour
Quand je fait \l liste la base de données, certaine base est "databasename\r".
J'essaie de le supprimer mais il y a une erreur "database name does not exist"
Merci à vous
Hors ligne
Quel ordre exécutez-vous ?
Guillaume.
Hors ligne
bonjour,
quand je fait \l pour lister les bases existants le résultat est comme ci dessous
postgres
comptable
comptable-_1\r
compltable_2\r
je me demande d'où vient le \r en fin du nom de la base.
Et en plus quand je fait
drop database comptable_1
le resultat m'a dit "database does not exist"
Merci beacoup pour votre réponse
Hors ligne
Du coup, il manque le \r.Personnellement, je testerais "DROP DATABASE "comptable-_1\\r;"
Guillaume.
Hors ligne
Merci beaucoup pour votre réponse
Avant le nom de la base crée est comptable_1.
Mais il se passe quelque chose que je ne sais pas le nom de la base devient comptable_1\r
Et je ne peux pas la supprimer
Hors ligne
Cela me fait penser à une fin de ligne Windows, copiée/collée dans un script unix.
Si dans psql vous faites
CREATE DATABASE base_1;
puis
\l
qu'obtenez-vous ?
Hors ligne
\r peut être un retour chariot (code 13) exprimé en séquence d'échappement. En fait le nom de la base serait comptable_1 suivi du caractère de code 13. Pour savoir comment/pourquoi c'est arrivé il faudrait analyser avec quelle méthode/outil cette table a été créée.
C'est vérifiable avec une requête:
select c, ascii(c) from
(select regexp_split_to_table(datname, '') as c
from pg_database where datname like 'comptable\_1%') s;
Cette requête sort chaque caractère du nom de la base séparément avec son code.
Si le dernier caractère est bien le code 13, on pourrait utiliser par exemple la syntaxe unicode suivante pour supprimer la base:
DROP DATABASE U&"comptable_1\000d";
ou la renommer
ALTER DATABASE U&"comptable_1\000d" RENAME TO "autre_nom";
000d étant le code Unicode hexa correspondant à 13.
Voir la doc https://docs.postgresql.fr/10/sql-syntax.html
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
Bonjour,
C'est résolu. La base a été supprimer en suivant le conseil de dverite ci-dessous.
C'est vérifiable avec une requête:
select c, ascii(c) from
(select regexp_split_to_table(datname, '') as c
from pg_database where datname like 'comptable\_1%') s;
Cette requête sort chaque caractère du nom de la base séparément avec son code.
Si le dernier caractère est bien le code 13, on pourrait utiliser par exemple la syntaxe unicode suivante pour supprimer la base:
DROP DATABASE U&"comptable_1\000d";
ou la renommer
ALTER DATABASE U&"comptable_1\000d" RENAME TO "autre_nom";
Merci à vous
Hors ligne
Pages : 1