Problème modification de taille du champ d'une table en postgresQL.

Problème modification de taille du champ d'une table en postgresQL. - SQL/NoSQL - Programmation

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.

Reply

Marsh Posté le 20-07-2004 à 16:26:50   

Reply

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.

Reply

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 ?

Reply

Marsh Posté le 20-07-2004 à 16:44:50    

nope

Reply

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;
 
??

Reply

Marsh Posté le 20-07-2004 à 16:46:59    

il n'y a pas de contrainte dessus?

Reply

Marsh Posté le 20-07-2004 à 16:47:50    

même pas...

Reply

Marsh Posté le 20-07-2004 à 16:49:06    

error:PARSER near "" ...

Reply

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?

Reply

Marsh Posté le 20-07-2004 à 16:51:07    

tu travailles avec quel outil? psql?

Reply

Marsh Posté le 20-07-2004 à 16:51:07   

Reply

Marsh Posté le 20-07-2004 à 16:52:29    

statement number : 1
error code : 1
error : PARSER parse error at or near ""

Reply

Marsh Posté le 20-07-2004 à 16:52:59    

ISQL

Reply

Marsh Posté le 20-07-2004 à 16:54:43    

même erreur sur psql

Reply

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?

Reply

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

Reply

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.

Reply

Marsh Posté le 20-07-2004 à 17:04:05    

connait pas les schéma :/

Reply

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 ...

Reply

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?

Reply

Marsh Posté le 20-07-2004 à 17:16:35    

c'est quoi la syntax du dump ?
c'est bien pour vider un champ ?

Reply

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...

Reply

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

Reply

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

Reply

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

Reply

Marsh Posté le 20-07-2004 à 17:23:02    

tu lance bien la commande hors de la db?

Reply

Marsh Posté le 20-07-2004 à 17:23:20    

oui c'est une vieille version mais je pense pas que çà vienne de çà

Reply

Marsh Posté le 20-07-2004 à 17:23:40    

oups je récommence

Reply

Marsh Posté le 20-07-2004 à 17:25:39    

il est où le fichier après ?

Reply

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

Reply

Marsh Posté le 20-07-2004 à 17:27:46    

il y avait juste marqué selected TOC Entries:
et puis rien ...

Reply

Marsh Posté le 20-07-2004 à 17:28:52    

:heink: t'as quelle version de postgres?

Reply

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...


Message édité par lolofora le 20-07-2004 à 17:32:56
Reply

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 !!

Reply

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.

Reply

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

Reply

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?

Reply

Marsh Posté le 20-07-2004 à 17:47:23    

non je pense zont trop peur de faire planter tout le réseau.

Reply

Marsh Posté le 20-07-2004 à 17:49:21    

Je suppose qu'ils ont jamais entendu parler de test d'intégration...

Reply

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 !!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed