Bug #6996
ferméProblème de script SQL sur migration 5.14 vers 5.15
100%
Description
ERROR RETURNED BY THE RDBMS : La diffÚrence entre deux colonnes datetime a pr
ovoquÚ un dÚpassement de capacitÚ au moment de l'exÚcution.
*STATEMENT ON ERROR IS : /
Copying the media data.
*/
INSERT INTO SC_Gallery_Media (mediaId, mediaType, instanceId,
title, description, author, keyWord,
beginVisibilityDate, endVisibilityDate,
createDate, createdBy, lastUpdateDate, lastUpdated
By)
SELECT
cast(photoId as varchar),
'Photo',
instanceId,
title,
description,
author,
keyword,
case
when beginDate = '0000/00/00' THEN -2208992400000
else cast(DATEDIFF(s, '1970-01-01 00:00:00', convert(datetime, beginDate
, 111)) as bigint) * 1000
END,
case
when endDate = '9999/99/99' THEN 32503590000000
else cast(DATEDIFF(s, '1970-01-01 00:00:00', convert(datetime, endDate,
111)) as bigint) * 1000
END,
convert(datetime, creationDate, 111),
creatorId,
CASE WHEN updateDate IS NOT NULL THEN convert(datetime, updateDate, 111)
ELSE convert(datetime, creationDate, 111) END,
CASE WHEN updateDate IS NOT NULL THEN updateId
ELSE creatorId END
FROM
SC_Gallery_Photo_up005 d:\Silverpeas\dbRepository\mssql\gallery\up005\create
_table.sql.
ERROR - Database build FAILED (19/10/15 10:56).*********************************
Mis à jour par Miguel Moquillon il y a environ 9 ans
- Statut changé de New à Feedback
Nous avons des tests automatiques d'installation et de mise à jour Silverpeas 5.15-SNAPSHOT avec comme bases de données SQLServer, Oracle et PostgreSQL et nous avons eu aucun retour d'erreurs sur ce sujet.
Par précaution, j'ai testé la mise-à-jour d'une 5.14.4 vers la 5.15-SNAPSHOT avec une base de données SQLServer et avec un certain nombre d'images dans une gallery et là non plus, pas d'erreur de migration.
Il faudrait voir l'état de la table SC_Gallery_Photo au départ, si cette dernière aurait des données incohérentes qui provoqueraient ce problème.
Mis à jour par David Lesimple il y a environ 9 ans
oui mais des tests avec beaucoup de données, c'est toujours mieux ;o)
J'ai trouvé, sur la colonne endDate, on a une ligne avec 2300/02/28..
quelle est la limite ?
Mis à jour par Miguel Moquillon il y a environ 9 ans
https://msdn.microsoft.com/fr-fr/library/ms189794(v=sql.120).aspx
Le problème vient de la fonction datediff propre à SQLServer qui renvoie un int et non un bigint, provoquant ainsi un dépassement de taille du type lorsque la différence entre la date de début et celle de fin (utilisée pour calculer la date en secondes depuis la référence classique du 1 janvier 1970) devient trop grande.
Autrement dit, la date ne peut pas dépasser 2038/01/19 inclue.
Mis à jour par David Lesimple il y a environ 9 ans
- Statut changé de Feedback à Closed
- % réalisé changé de 0 à 100
Merci Miguel, cette indication propre à MSSQL pourra être mise dans la release notes ?