Dans cet article


Offres d'emploi

Tags

ORA-12899: value too large for column

Description

L’erreur « _ORA-12899: value too large for column_« peut être constatée dans les logs des Intranet Servers Planisware lors d’une transaction d’enregistrement en Base de Données (BDD).

_Exemple : ORA-12899: value too large for column \ »BASEDEV2\ ».\ »NETWORK\ ».\ »NAME\ »(actual: 84, maximum: 80)

Ici on constate que l’on souhaite enregistrer le nom d’un sous-projet d’une longueur de 84 (caractères ou bytes en fonction du type d’encodage du champ « NAME » en BDD). Or ce champ a une longueur maximale de 80 en BDD.

Cause :

Il y a une incompatibilité entre la longueur du champ à enregistrer et la taille maximale du champ admissible dans la BDD. Ce problème peut-être rencontré si la BDD est encodée en UTF8. En effet, en UTF8 les caractères accentués ou spéciaux sont encodés sur un plus grand nombre de bytes qu’en encodage classique ISO.

En général, on constate ce genre d’erreur pour des champs de type chaine de caractères dont l’encodage en BDD est de type BYTE et la BDD paramétrée en UTF8 ou AL32UTF8 : dans ce cas la taille maximum autorisée en base sera de n BYTE alors que P5 va autoriser la saisie de n caractères (codés sur m bytes avec m ≥ n).

Résolution :

Il s’agit de remettre en cohérence le modèle physique de données avec le type d’encodage de la BDD. C’est à dire faire en sorte que  les champs de type « chaine de caractères » du schéma P5 soient tous de type CHAR et non pas BYTE. En effet dans ce cas le SGBD prévoit l’espace nécessaire à l’encodage de n caractères et pas de seulement n bytes.

1)      La modification des champs concernés directement dans la BDD n’est pas recommandée car :

  • Elle est longue (en générale la quasi totalité des champs « chaine de caractères » sont à migrer.
  • Elle est plus risqué car l’intervention est réalisée directement en BDD.

2)      La migration globale de la BDD par export / import

  • Il s’agit de réaliser un dpx de la BDD P5 puis de le réimporter dans une BDD où le « NLS_LENGTH_SEMANTICS » (dans le cas d’Oracle) est positionné à « CHAR ».
  • L’export / import via les outils standard du SGBD (ex. sous Oracle exp/imp, expdp/impdp …) est également possible en s’assurant que la BDD cible a bien un « NLS_LENGTH_SEMANTICS » positionné à « CHAR » (dans le cas d’Oracle) et que les options d’import permettent de préciser le type d’encodage par défaut pour ne pas conserver l’encodage des champs en BYTE.

 

L'équipe AXOPEN

Voir aussi les articles suivants

Description Lorsque l’on travaille sur des objets scripts OPX2 au bout d’un certain nombre de vérifications/exécutions des scripts il arrive fréquemment que le client lourd P5 affiche un message d’erreur. du type suivant : Cause Il s’agit globalement d’un problème de saturation mémoire car le client lourd présente des difficultés à libérer/recycler la mémoire RAM utilisée. Résolution La solution la plus simple et la plus radicale est de réaliser les opérations suivantes :
Lire l'article

ERREUR : les services P5 n’arrivent pas à démarrer après une installation de Planisware Application Server sous Windows 7
**Description ** Dans certains cas il peut arriver que lorsqu’on installe un environnement Planisware Application Server sur un poste sous Windows 7 le démarrage des services Planisware à la fin de l’installation échoue. Cause Depuis Windows 7 la gestion de privilèges administrateur pose parfois problème lorsque l’on installe un serveur d’application Planisware sous Windows. Le programme d’installation tente donc de démarrer les services mais il n’a pas l’autorisation de le faire.
Lire l'article

Description  En client léger lorsque l’on souhaite sélectionner les lignes ou les cellules d’un tableau la sélection ne semble pas fonctionner correctement (une partie des cellules sélectionnées ne le restent pas). C’est le cas en particulier lorsque les lignes/cellules sélectionnées ne sont pas affichées en même temps à l’écran (c’est à dire lorsqu’il est nécessaire d’utiliser la barre de défilement). On constate souvent ce problème lorsque l’on utilise la fonction copier/coller puisqu’une partie des cellules ne sera pas copiée.
Lire l'article