Modifier structure de table

Bonjour,

Suite au basculement entre HSQLDB & FireBird, je teste ce nouveau moteur. Je rencontre quelques soucis dès le début car je n’arrive pas à modifier les structures de tables : dès que je veux effectuer le moindre changement sur le schéma d’une table, la modification est refusée et j’ai le message d’erreur suivant : Impossible de modifier la colonne “…”. Si je coche “Oui”, la colonne est détruite et recrée vide.

Est-ce un bug connu ?

Pour info, la base sur laquelle je teste : Base de données firebird.odb

Jacques

Bonjour

J’ai constaté qu’il était impossible de modifier des colonnes référencées par ailleurs dans une vue, ou encore pour lesquelles un index avait été créé (relation, index perso…). Dans ces circonstances on ne peut pas parler de bug… Es-tu dans ce cas ?

Cordialement

Bonsoir Pierre-Yves,

Il n’y a aucune relation ni vue dans ma base de test sur laquelle je constate ce problème. Juste un formulaire qui reprend tous les champs. Pour la table (unique pour l’instant), elle a bien un index primaire.
Ce n’est pas ce champ d’index que je cherche à modifier. A noter que l’opération ne pose aucun problème avec HSQLDB. Si ce n’est pas un bug, c’est une régression très dommageable.

Cordialement,

OK, merci pour les précisions. Je ne reproduis pas le problème. S’il s’agit d’une base test, je suppose qu’elle ne contient pas de données confidentielles/personnelles ? Pourrais-tu la joindre à ta question (ce n’est pas possible dans un commentaire) pour qu’on puisse tester de notre côté et éventuellement ouvrir un rapport de bug ?

Cordialement

Je pense avoir trouvé en partie mon “erreur”: vouloir rendre un champ “obligatoire”

HSQLDB me permet de réduire la taille d’un champ ou changer son type sans trop de restrictions. Si la nouvelle longueur est inférieure à la longueur des informations désirées, celles-ci seront tronquées. Firebird refuse cela. J’ai réussi en créant une nouvelle colonne avec la valeur tronquée, transférer par CAST puis renommer les colonnes pour retrouver les liens éventuels existant dans des requêtes. Rien de plus simple ? Quelle est la logique pour manipuler la colonne d’index primaire ou rendre un champ obligatoire ?

Cordialement,

La logique semble malheureusement être celle que tu utilises… créer un champ, récupérer les données, supprimer l’ancien, renommer. Tout ceci en ayant d’abord supprimé clés (primaires, externes), index, relations, vues, et toute autre objet ayant pu créer des “contraintes” si le champ est concerné. Voir cette FAQ.

Cordialement