Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 22966|Répondre: 1

[Source] spring.net solution de débordement nhibernate sqldatetime

[Copié le lien]
Publié sur 13/09/2017 14:34:58 | | | |
Débordement de SqlDateTime. Ça doit être entre le 01/01/1753 00:00:00 et le 31/12/9999 23:59:59




Lors de l’opération de mise à jour depuis le site web, j’avais sans cesse une erreur, et je pensais que c’était la configuration XML ou qu’un problème s’était passé lors de l’exécution de l’instruction SQL

J’ai essayé d’utiliser un analyseur de requêtes SQL pour récupérer les instructions SQL générées, et j’ai découvert que c’était quoi le problème avec une exécution correcte ? L’instruction SQL est la suivante :

exécutif sp_executesql N’INSERT DANS dbo. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, NowLeanAlarmType, InsertTime, TreatedTime) VALEURS (@p0, @p1, @p2, @p3, @p4, @p5, @p6) ; select SCOPE_IDENTITY()',N'@p0 int,@p1 int,@p2 int,@p3 int,@p4 int,@p5 datetime,@p6 datetime',@p0=1,@p1=35,@p2=12,@p3=10,@p4=10,@p5='2017-09-13 13:09:41',@p6=NULL
Débordement de SqlDateTime. Une résolution doit être --- entre le 1/01/1753 00:00:00 et le 31/12/9999 à 23:59:59

Cause de l’erreur

    Si la valeur du type de temps passé à la base de données est NULLE, ou lors de l’insertion ou de la mise à jour de la base pour DateTime.MinValue, la valeur du champ datetime est nulle par défaut.
    NULL ici fait référence à null dans le code du programme, et la plupart des scénarios où cela se produit sont : une variable de type temps est définie dans le programme, et elle est transmise à la base de données (ou à la procédure stockée) sans attribuer de valeur. À ce moment-là, la valeur de cette variable est attribuée par défaut 01/01/01.
     Puisque le champ de type DateHeure dans la base de données, la valeur minimale est 1/1/1753 12:00:00, tandis que le . NET Framework, le type DateTime, la valeur minimale est 1/1/0001 0:00:00, évidemment, elle dépasse la plage minimale de valeur de la valeur SQL, ce qui entraîne une erreur de dépassement de données.
    Voyons comment voir .net et SQL Max en temps minimum en C# :


Effet de sortie :



Au final, il a été bricolé pendant plus de dix minutes,

Les causes finales d’erreur sont les suivantes :

L’un des types d’attributs de l’objet est aussi un objet, c’est-à-dire que la table possède une clé étrangère, et un nouvel attribut datetime est ajouté à la table de clé étrangère, qui n’a pas de valeur assignée et n’est pas défini sur un type nullable

Lors de l’ajout ou de la mise à jour d’un objet, la date-heure de l’objet à clé étrangère est automatiquement associée à la valeur par défaut, car l’heure de la valeur par défaut .net est inférieure au temps minimum par défaut de la base de données

Solution : Définir la propriété d’un type datetime de l’objet à clé étrangère sur type nullable, aider les collègues à le résoudre parfaitement !







Précédent:Opération .net/C# Ajout de cache, suppression, modification et requête du cache REDIS [code source]
Prochain:asp.net Analyse des anomalies sur le site web
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com