-
Modification d'un champ
Bonjour,
A partir d'une base ayant 2 utilisateurs SYSDBA et USER1 (avec tous les droits), je cherche à modifier la taille d'un champ dans une table existente.
J'utilise la requete suivante
update RDB$RELATION_FIELDS set RDB$FIELD_SOURCE = "LONG_VARCHAR" where (RDB$FIELD_NAME = "field1") and (RDB$RELATION_NAME = "table1");
Qui me retourne le message suivant, quand je suis connecté en USER1 :
Erreur du serveur de base de données : no permission for control access to TABLE TABLE1
Alors qu'elle fonctionne correctement quand je suis connecté en SYSDBA.
J'ai relancé une serie de GRANT, et le pb persiste.
Est-ce que la structure de la base n'est modifiable que par SYSDBA ? ou j'ai loupé quelque chose.
-
heu... il me semble dangeureux de faire cela...
pourquoi ne pas essayer quelque chose du genre alter table table1 alter field1 type varchar(200) plutôt que de tenter de faire un hotfix toujours hazardeux?
si tu as les droits sur cette table, cela devrait passer comme une lettre à la poste (pas un jour de grêve...)
-
En fait je veux utiliser un varchar supérieur à 255 caractères (2048).
-
Je viens de faire l'essai et j'ai l emessage suivant
This operation is not defined for system tables.
unsuccessful metadata update.
Column FIELD1 from table TABLE1 is referenced in RDB$231
-
Salut,
Tu ne pourras pas modifier ton champ s'il est utilisé dans une vue ou une procédure stockée... Vérifie dans les dépendances de ta table.
@+
-
Il y avait une vue sur ce champ.
Mais même après destuction de la vue, ou test sur un autre champ, j'ai toujours le même message.
Ce que je ne comprends pas, c'est que ça marche par contre sans soucis, si je me connecte à la base en tant que SYSDBA.
-
Est-ce que ton utilisateur à bien tous les droits nécessaires sur les tables système ?
-
Normalement OUI.
J'ai refait des grant sur cette table, plus sur la table RDB$RELATION_FIELDS.
Mais rien n'y change
-
Bon, après plusieurs tests, voici l'explication (c'est dû au OWNER) :
Un utilisateur ne peut modifier QUE LES TABLES QU'IL A CREEES, quelque soient ses droits sur RDB$RELATION_FIELDS.
Sysdba peut modifier TOUTES LES TABLES DE TOUT LE MONDE.
@+
-
Ok, je comprend mieux maintenant.
Et dans mon cas les tables ont été créées par SYSDBA.
Merci de tes lumières.