Des Erreurs de SQL Server : Chaîne de caractères ou des données binaires seront tronqués
Ma table :
log_id bigint
old_value xml
new_value xml
module varchar(50)
reference_id bigint
[transaction] varchar(100)
transaction_status varchar(10)
stack_trace ntext
modified_on datetime
modified_by bigint
Requête D'Insertion :
INSERT INTO [dbo].[audit_log]
([old_value],[new_value],[module],[reference_id],[transaction]
,[transaction_status],[stack_trace],[modified_on],[modified_by])
VALUES
('asdf','asdf','Subscriber',4,'_transaction',
'_transaction_status','_stack_trace',getdate(),555)
Erreur :
Msg 8152, Level 16, State 14, Line 1
String or binary data would be truncated.
The statement has been terminated.
Pourquoi est-ce ???
+1 pour fournir suffisamment d'information pour comprendre votre question. J'ai presque pris dos pour ne pas avoir lu le message d'erreur et en regardant votre SQL pour l'attraper vous-même, cependant. 🙂
Juste une suggestion : Si vous n'êtes pas sûr au sujet de la longueur des valeurs dans Transaction_status rendre à varchar(max)
wow, c'est pas une très bonne suggestion. Vous ne savez pas qu'ils ne savent pas combien de temps la colonne, et la première réponse est à trouver. Dois-je acheter un 30-maison de chambre à coucher au cas où, j'ai 30 enfants? Bien sûr que non.
Juste une suggestion : Si vous n'êtes pas sûr au sujet de la longueur des valeurs dans Transaction_status rendre à varchar(max)
wow, c'est pas une très bonne suggestion. Vous ne savez pas qu'ils ne savent pas combien de temps la colonne, et la première réponse est à trouver. Dois-je acheter un 30-maison de chambre à coucher au cas où, j'ai 30 enfants? Bien sûr que non.
OriginalL'auteur Anuya | 2012-06-01
Vous devez vous connecter pour publier un commentaire.
Vous êtes à essayer d'écrire plus de données qu'une colonne spécifique peut stocker. Vérifier la taille des données que vous essayez d'insérer à l'encontre de la taille de chacun des champs.
Dans ce cas transaction_status est un varchar(10) et que vous tentez de stocker de 19 caractères.
OriginalL'auteur Tremmors
ce type d'erreur se produit généralement lorsque vous devez mettre des personnages ou des valeurs de plus que vous avez spécifié dans la table de Base de données, comme dans ce cas:
vous spécifiez
transaction_status varchar(10)
mais vous avez réellement tentez de stocker
_transaction_status
qui contiennent de 19 caractères.
c'est pourquoi vous avez été confrontés à ce type d'erreur dans ce code..
OriginalL'auteur jaideep
Cette erreur est généralement rencontrés lors de l'insertion d'un enregistrement dans une table où l'une des colonnes de type VARCHAR ou type de données CHAR et la longueur de la valeur insérée est plus longue que la longueur de la colonne.
Je ne suis pas satisfait de la façon dont Microsoft a décidé d'informer avec ce "sec" message de réponse, sans aucun point de l'endroit où trouver la réponse.
OriginalL'auteur zhrist