Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2264 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°800912
lolofora
Posté le 20-07-2004 à 16:26:50  profilanswer
 

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.

mood
Publicité
Posté le 20-07-2004 à 16:26:50  profilanswer
 

n°800916
gizmo
Posté le 20-07-2004 à 16:34:30  profilanswer
 

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.

n°800921
lolofora
Posté le 20-07-2004 à 16:37:22  profilanswer
 

oui c'est ce que j'ai cru comprendre...
 
tu serais pas le frêre à devins par hasard ?

n°800929
gizmo
Posté le 20-07-2004 à 16:44:50  profilanswer
 

nope

n°800930
lolofora
Posté le 20-07-2004 à 16:44:56  profilanswer
 

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

n°800931
gizmo
Posté le 20-07-2004 à 16:46:59  profilanswer
 

il n'y a pas de contrainte dessus?

n°800933
lolofora
Posté le 20-07-2004 à 16:47:50  profilanswer
 

même pas...

n°800934
lolofora
Posté le 20-07-2004 à 16:49:06  profilanswer
 

error:PARSER near "" ...

n°800937
gizmo
Posté le 20-07-2004 à 16:50:11  profilanswer
 

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?

n°800942
gizmo
Posté le 20-07-2004 à 16:51:07  profilanswer
 

tu travailles avec quel outil? psql?

mood
Publicité
Posté le 20-07-2004 à 16:51:07  profilanswer
 

n°800945
lolofora
Posté le 20-07-2004 à 16:52:29  profilanswer
 

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

n°800946
lolofora
Posté le 20-07-2004 à 16:52:59  profilanswer
 

ISQL

n°800950
lolofora
Posté le 20-07-2004 à 16:54:43  profilanswer
 

même erreur sur psql

n°800952
gizmo
Posté le 20-07-2004 à 16:55:02  profilanswer
 

et tu bosses dans le schéma public, un schéma avec authorisation ou un schema dans le search_path?

n°800957
lolofora
Posté le 20-07-2004 à 16:57:30  profilanswer
 

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

n°800962
gizmo
Posté le 20-07-2004 à 17:02:05  profilanswer
 

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.

n°800965
lolofora
Posté le 20-07-2004 à 17:04:05  profilanswer
 

connait pas les schéma :/

n°800969
lolofora
Posté le 20-07-2004 à 17:06:11  profilanswer
 

c'est bizarre que l'ajout marche avec  ALTER TABLE tab ADD COLUMN new_col new_data_type;
 
et pas la suppression ...

n°800982
gizmo
Posté le 20-07-2004 à 17:10:46  profilanswer
 

C'est vraiment étrange :/ Et si tu fais un dump de la structure de la table, tu obtiens quoi?

n°800995
lolofora
Posté le 20-07-2004 à 17:16:35  profilanswer
 

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

n°801001
lolofora
Posté le 20-07-2004 à 17:18:57  profilanswer
 

apparemment il faut recréer une nouvelle table et copier l'ancienne dedans sans le champ qu'on veut supprimer...

n°801002
gizmo
Posté le 20-07-2004 à 17:19:26  profilanswer
 

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

n°801003
gizmo
Posté le 20-07-2004 à 17:20:05  profilanswer
 

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

n°801006
lolofora
Posté le 20-07-2004 à 17:22:00  profilanswer
 

pg_dump -s -t nom_de_la_table nom_de_la_db
 
ENCORE PARSE ERREUR ! pfff

n°801007
gizmo
Posté le 20-07-2004 à 17:23:02  profilanswer
 

tu lance bien la commande hors de la db?

n°801008
lolofora
Posté le 20-07-2004 à 17:23:20  profilanswer
 

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

n°801009
lolofora
Posté le 20-07-2004 à 17:23:40  profilanswer
 

oups je récommence

n°801011
lolofora
Posté le 20-07-2004 à 17:25:39  profilanswer
 

il est où le fichier après ?

n°801014
gizmo
Posté le 20-07-2004 à 17:26:54  profilanswer
 

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

n°801017
lolofora
Posté le 20-07-2004 à 17:27:46  profilanswer
 

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

n°801020
gizmo
Posté le 20-07-2004 à 17:28:52  profilanswer
 

:heink: t'as quelle version de postgres?

n°801027
lolofora
Posté le 20-07-2004 à 17:32:31  profilanswer
 

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
n°801034
lolofora
Posté le 20-07-2004 à 17:36:01  profilanswer
 

Postgres supports ALTER TABLE to some extent.  
You can ADD COLUMN, RENAME COLUMN and RENAME TABLE.
 
ERF !!!
 
pas possible de DROP en faite !!

n°801043
gizmo
Posté le 20-07-2004 à 17:39:25  profilanswer
 

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.

n°801053
lolofora
Posté le 20-07-2004 à 17:41:46  profilanswer
 

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

n°801059
gizmo
Posté le 20-07-2004 à 17:45:02  profilanswer
 

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?

n°801064
lolofora
Posté le 20-07-2004 à 17:47:23  profilanswer
 

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

n°801070
gizmo
Posté le 20-07-2004 à 17:49:21  profilanswer
 

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

n°801071
lolofora
Posté le 20-07-2004 à 17:49:44  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

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

 

Sujets relatifs
Questions sur la création de DLL et problème[problème c++] Conteneur STL et héritage
système de langue (problème avec les url !)Probleme avec variable/sql et cache opera
[Résolu] Probleme de résolutin de code html ecrit avec du php par echoproblème authentification proxy
Problème avec "Redim Preserve"[js]modification toute simple:affichage dans une frame
Gkt2-perl: problème avec les comboboxmodification base de registre
Plus de sujets relatifs à : Problème modification de taille du champ d'une table en postgresQL.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR