Errore di SQL Server : String o dati binari essere troncato

Mio tavolo :

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

Query Di Inserimento :

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)

Errore :

Msg 8152, Level 16, State 14, Line 1
String or binary data would be truncated.
The statement has been terminated.

Perché è che ???

  • +1 per la fornitura di informazioni sufficienti per capire la tua domanda. Quasi quasi mi ha preso di nuovo per non leggere il messaggio di errore e guardando il tuo SQL per la cattura di te, però. 🙂
  • Solo un suggerimento : Se non siete sicuri circa la lunghezza dei valori in Transaction_status rendono varchar(max)
  • wow, che non è un buon suggerimento a tutti. Non sai che non si sa per quanto tempo la colonna e la prima risposta è quello di scoprire. Devo comprare un 30-casa di camera da letto nel caso in cui ho 30 bambini? Naturalmente non.
InformationsquelleAutor Anuya | 2012-06-01

 

3 Replies
  1. 50

    Si sta cercando di scrivere più dati di una colonna specifica in grado di memorizzare. Controllare le dimensioni dei dati che si sta tentando di inserire contro le misure di tutti i campi.

    In questo caso transaction_status è un varchar(10) e si sta cercando di memorizzare 19 caratteri.

    • +1. Mi ha battuto per 8 secondi.
  2. 3

    questo tipo di errore si verifica in genere quando devi mettere caratteri o valori maggiori di quelle che avete specificato nella tabella di Database come in questo caso:
    si specifica
    transaction_status varchar(10)
    ma in realtà il tentativo di memorizzare

    _transaction_status
    che contengono 19 caratteri.
    ecco perché di fronte a questo tipo di errore in questo codice..

  3. 3

    Questo errore di solito si incontrano quando si inserisce un record in una tabella in cui una delle colonne è un CHAR o VARCHAR tipo di dati e la lunghezza del valore inserito è più lungo rispetto alla lunghezza della colonna.

    Io non sono soddisfatto di come Microsoft ha deciso di informare con questo “lavaggio” del messaggio di risposta, senza alcun punto di dove cercare la risposta.

Lascia un commento