Problème modification de taille du champ d'une table en postgresQL. - SQL/NoSQL - Programmation
Marsh Posté le 20-07-2004 à 16:34:30
En PgSQL, il n'est pas permis de changer une colonne. Tu dois en créer une autre, copier le contenu l'ancienne dedans et effacer l'ancienne.
Marsh Posté le 20-07-2004 à 16:37:22
oui c'est ce que j'ai cru comprendre...
tu serais pas le frêre à devins par hasard ?
Marsh Posté le 20-07-2004 à 16:44:56
j'en ai créer une autre et copier le contenu de l'ancienne dedans mais la suppression de l'ancienne marche po
pourtant je pense que c'est le bon code... :
ALTER TABLE docs DROP COLUMN nom;
??
Marsh Posté le 20-07-2004 à 16:50:11
la syntaxe est bonne (à condition d'être dans le bon schéma), et s'il n'y a pas de contrainte dessus, il ne devrait pas y avoir de problème. Quel est le message d'erreur?
Marsh Posté le 20-07-2004 à 16:52:29
statement number : 1
error code : 1
error : PARSER parse error at or near ""
Marsh Posté le 20-07-2004 à 16:55:02
et tu bosses dans le schéma public, un schéma avec authorisation ou un schema dans le search_path?
Marsh Posté le 20-07-2004 à 16:57:30
lol je vois pas de quoi tu parle là... mais j'ai tous les droits sur la bd en tout cas si c'était çà la question
Marsh Posté le 20-07-2004 à 17:02:05
la question n'est pas là. Mais si tu ne bosses pas dans un des types de schéma que j'ai spécifié, tu dois préfixer le nom de la table de son schéma.
Marsh Posté le 20-07-2004 à 17:06:11
c'est bizarre que l'ajout marche avec ALTER TABLE tab ADD COLUMN new_col new_data_type;
et pas la suppression ...
Marsh Posté le 20-07-2004 à 17:10:46
C'est vraiment étrange Et si tu fais un dump de la structure de la table, tu obtiens quoi?
Marsh Posté le 20-07-2004 à 17:16:35
c'est quoi la syntax du dump ?
c'est bien pour vider un champ ?
Marsh Posté le 20-07-2004 à 17:18:57
apparemment il faut recréer une nouvelle table et copier l'ancienne dedans sans le champ qu'on veut supprimer...
Marsh Posté le 20-07-2004 à 17:19:26
non, c'est pour avoir la structure de la table. la syntaxe c'est pg_dump -s -t nom_de_la_table nom_de_la_db
Marsh Posté le 20-07-2004 à 17:20:05
lolofora a écrit : apparemment il faut recréer une nouvelle table et copier l'ancienne dedans sans le champ qu'on veut supprimer... |
non non. Sauf eput-être si tu as une très vielle version de PgSQL
Marsh Posté le 20-07-2004 à 17:22:00
pg_dump -s -t nom_de_la_table nom_de_la_db
ENCORE PARSE ERREUR ! pfff
Marsh Posté le 20-07-2004 à 17:23:20
oui c'est une vieille version mais je pense pas que çà vienne de çà
Marsh Posté le 20-07-2004 à 17:26:54
y a pas de fichier, tu as l'output sur la console normalement. Si tu veux un fichier, faut le rediriger avec > nom_de_fichier
Marsh Posté le 20-07-2004 à 17:27:46
il y avait juste marqué selected TOC Entries:
et puis rien ...
Marsh Posté le 20-07-2004 à 17:32:31
dans le copyright ya juste marqué basé sur postgres 95
ya moyen de voir la version autrement qu'avec \copyright ?
je l'a connaissait avant mais m'en souvient plus
j'ai un vague souvenir d'une 6.2...
Marsh Posté le 20-07-2004 à 17:36:01
Postgres supports ALTER TABLE to some extent.
You can ADD COLUMN, RENAME COLUMN and RENAME TABLE.
ERF !!!
pas possible de DROP en faite !!
Marsh Posté le 20-07-2004 à 17:39:25
ah ouais quand même. Mais elle date du déluge ta DB. la 6.2 c'est l'une des premières qu'ils ont sorties.
Marsh Posté le 20-07-2004 à 17:41:46
BEGIN;
LOCK TABLE old_table;
SELECT ... -- select all columns but the one you want to remove
INTO TABLE new_table
FROM old_table;
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
COMMIT;
re-erf même çà, çà marche pas !!
euh c'est la DB du taff j'y suis pour rien ;p
Marsh Posté le 20-07-2004 à 17:45:02
Y a même plus la doc de la 6.2 sur le site officiel. Du coup, ca va être dur de savoir ce qui est supporté et ce qu ne l'est pas.
Et à ton boulot, ils ont jamais envisagé un upgrade?
Marsh Posté le 20-07-2004 à 17:47:23
non je pense zont trop peur de faire planter tout le réseau.
Marsh Posté le 20-07-2004 à 17:49:21
Je suppose qu'ils ont jamais entendu parler de test d'intégration...
Marsh Posté le 20-07-2004 à 17:49:44
c'est bon çà marche !!!
fallait recrée une table temporaire avec tous les champs sauf celui à virer et la renomer à la fin avec celle d'avant.
ouf !!
merci pour ton aide gizmo !!
Marsh Posté le 20-07-2004 à 16:26:50
Salut,
J'aimerais modifier la taille du champ d'une table de ma BD en PostgresQL pour passer d'un varchar(30) à un varchar(255).
J'ai essayé : ALTER TABLE docs CHANGE nom nom VARCHAR( 255 );
mais cela ne marche pas car CHANGE n'est pas reconnu et
je ne trouve pas comment le faire sans ce fameux "change"...
Quelqu'un aurait-il la soluce ?
Merci.