Erreur insertion m_rowid lors de la création d'une association

Tags: #<Tag:0x00007f2f2b97e418>

Bonjour,
j’ai 2 objets : BCSIConvergedCriteriaSurvey et BCSIOtherCriterion.
Ils sont liés par une relation N-N via l’objet BCSIConvergedCriteriaSurveyOtherCriterion.
Cet objet est défini comme ceci

Lorsque je tente de créer une association via l’IHM, la création est très longue mais ce fait quand même. En analysant les logs, j’observe l’erreur suivante :


2020-08-18 15:37:25,226 ERROR [com.simplicite.util.engine.ObjectManager] SIMPLICITE|http://7205e964f4cb:8080||ECOREDB001|system|com.simplicite.util.engine.ObjectManager|update||Error SQL query: insert into m_rowid (row_id,rid_table,rid_curval) values (4,'bcsi_converged_criteria_survey_other_criterion.row_id',1)
    com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'rid_table' at row 1
     at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104)
     at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
     at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)

En investigant un peu, j’ai vu que bien que le nom de la table est limité à 100 caractères
image
la table m_row_id n’était pas correctement taillée :
image

Dans mon cas, le nom de ma table fait 47 caractères auxquels Simplicité rajoute “.row_id” dépassant ainsi la limite à 50 caractères.

Pouvez-vous me dire à quoi sert cette table svp ? Lorsque je fais un select dessus, je ne trouve que 3 éléments “m_async_job.row_id”, “m_log.row_id”, “m_session.row_id”. Je ne comprends pas pourquoi le système tente d’y insérer ma table ‘bcsi_converged_criteria_survey_other_criterion’.

Cordialement

[Platform]
Status=OK
Version=4.0.P24
BuiltOn=2020-08-02 16:23 (revision 8d432f4360f9e23e117498e97c0caec8ba8931ae)
Encoding=UTF-8
EndpointIP=21.0.9.3
EndpointURL=http://7205e964f4cb:8080
TimeZone=Europe/Paris
SystemDate=2020-08-18 16:06:28

Effectivement il y a une incohérence entre la taille logique du nom de table (100) et la taille logique/physique de cet attribut/colonne rid_table (100/50)

On va corriger ça et ce sera inclus aux patches dans la révision poussée ce soir. En attendant vous pouvez forcer manuellement la taille de cet colonne à 100 (ex: mettez 99+save puis 100+save)

PS: Cette table fait office de “séquence” pour les bases de données qui n’implémentent pas les séquences SQL (i.e. MySQL et MariaDB)