Avatar billede suppenudel Nybegynder
04. januar 2011 - 11:45 Der er 17 kommentarer og
1 løsning

String or binary data would be truncated

Hej,

Jeg prøver at ændre indholdet i en celle via edit mode i MS SQL Management Studio Express. Kolonnen er af typen int. Der står i forvejen 477 i feltet, men når jeg prøver at ændre det til eks. 1049 får jeg fejlen:

"String or binary data would be truncated. The statement has been terminated."

Hvordan kan jeg ændre det? Jeg har prøvet at ændre til bigint i stedet for int, uden held.

Underligt nok kan jeg godt ændre i nogle poster, andre kommer med fejl.
Avatar billede Syska Mester
04. januar 2011 - 11:53 #1
Sikker på du ikke ændre andre data?

Og sikker på at den column er en "int" ?

Får du flere fejlmeddelelser ?
Avatar billede suppenudel Nybegynder
04. januar 2011 - 12:38 #2
Hej, det er en int. Jeg klikker bare i feltet og ændrer værdien. Hele fejlmeddelelsen siger:

No row was updated.

The data in row 20 was not committed.
Error source: .Net SqlClient Data Provider.
Error Message: String or binary data would be truncated.
The statement has been terminated.

Correct errors and retry or press ESC to cancel the change(s).
Avatar billede Syska Mester
04. januar 2011 - 12:58 #3
Pas, jeg er helt lost. Der må være noget vi overser, og uden det hele foran mig, tror jeg ikke der er så meget at gøre.

mvh
Avatar billede erikjacobsen Ekspert
04. januar 2011 - 13:13 #4
Det mest oplagte er, at du har en CHAR(3) eller VARCHAR(3) felt. Det ville give mening ;)

Kan du ændre indholdet til 999
Kan du ændre indholdet til 1000

?
Avatar billede erikjacobsen Ekspert
04. januar 2011 - 13:16 #5
....eller et tegnsætproblem i et af de andre felter. Hvis der eksempelvis er æøå i et andet felt, som er i ISO-8859-1 i databasen (een byte), men ved redigering bliver til UTF-8 (3 tegn), så kan du også få den besked. Vi er langt ude....jeg gætter... men med intetsigende fejlbeskeder kan man jo ikke andet ;)
Avatar billede hrc Mester
04. januar 2011 - 13:24 #6
Jeg er ret sikker på der står tal i et strengfelt. Det må være, som tidligere nævnt, en (var)char(3) du skriver tallet i.
Avatar billede suppenudel Nybegynder
04. januar 2011 - 13:27 #7
Hej Erik,

Det er virkelig en int-kolonne (Det består af nogle ID'er der skal ændres, ikke identity!)Og det har lykkedes mig at ændre ti rækker nu, samme kolonne, med undtagelse af tre felter hvor den bliver ved med at melde fejlen.

Jeg har blandt andet ændret f.eks.

477 -> 1049 og
830 -> 1054

Så det virker totalt mystisk er der lige er tre rows hvor det ikke vil lade sig gøre..
Avatar billede erikjacobsen Ekspert
04. januar 2011 - 13:33 #8
Godt nok. Her er man skyldig, til det modsatte er bevist...

Hvad med andre felter i de rækker, hvor du ikke kan ændre dette felt?
Avatar billede hrc Mester
04. januar 2011 - 13:52 #9
Jeg kunne godt bruge lidt dokumentation. Kan du ikke højreklikke på tabellen og generere et Create script. Den tabel må være ret speciel.
Avatar billede suppenudel Nybegynder
04. januar 2011 - 14:21 #10
Okay, jeg kan ikke ændre i nogen af de andre felter for de pågældende rækker! Samme fejl kommer..!
Avatar billede suppenudel Nybegynder
04. januar 2011 - 14:21 #11
USE [dbtest]
GO

/****** Object:  Table [dbtest].[Webpage]    Script Date: 01/04/2011 14:13:36 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbtest].[Webpage](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [TyskNewID] [int] NULL,
    [EngelskNewID] [int] NULL,
    [NorskNewID] [int] NULL,
    [SvenskNewID] [int] NULL,
    [Main] [int] NULL,
    [MenuID] [bigint] NULL,
    [UndermenuID] [int] NULL,
    [WebType] [int] NULL,
    [StartDato] [varchar](50) NULL,
    [SlutDato] [varchar](50) NULL,
    [Fokusdato] [varchar](50) NULL,
    [Webpage] [varchar](250) NULL,
    [Publisher] [int] NULL,
    [Published] [varchar](50) NULL,
    [WebContent] [text] NULL,
    [VersionID] [int] NULL,
    [Godkendt] [bit] NULL,
    [DomainID] [int] NULL,
    [Image] [varchar](150) NULL,
    [PreTekst] [varchar](5000) NULL,
    [Sorter] [varchar](50) NULL,
    [VIP] [int] NULL,
    [Fokus] [int] NULL,
    [Tidspunkt] [varchar](50) NULL,
    [Pris] [varchar](50) NULL,
    [AltPris] [varchar](50) NULL,
    [Link] [varchar](350) NULL,
    [Alternativ1] [varchar](50) NULL,
    [Alternativ2] [varchar](50) NULL,
    [PageImg] [varchar](100) NULL,
    [ShopKat] [int] NULL,
    [Sitemapscore] [varchar](50) NULL,
    [SitemapEdit] [varchar](50) NULL,
    [SitemapExpectEdit] [varchar](50) NULL,
    [SitemapExclude] [int] NULL,
    [Deeplink] [varchar](200) NULL,
CONSTRAINT [PK_Webpage] PRIMARY KEY CLUSTERED
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO
Avatar billede Syska Mester
04. januar 2011 - 14:33 #12
og hvordan ser data ud for en række du ikke kan ændre ?
Avatar billede hrc Mester
04. januar 2011 - 18:21 #13
Mon ikke det har noget med ejerskabet at gøre? Normalt er tabeller ejet af dbo, dvs. [dbo].[Webpage]. Her er tabellen blevet oprettet med et andet login ved navn dbtest. Hvis du logger ind med dbtest burde det dog ikke give problemer at ændre tabellen.

Hvad om du prøver at rette det via SQL? update dbtest.Webpage set <field> = xx where ID = yy
Avatar billede suppenudel Nybegynder
05. januar 2011 - 13:48 #14
hrc -> Vi har kun ét login, og det er det samme som tabellen er oprettet med, men så er det bare stadig mærkeligt at det lige drejer som om 3 poster ud af en masse som ikke vil...

MEN, som du foreslog så virker det fint med manuel SQL-updates. Ikke optimalt hvis jeg havde flere 1000, men når det drejer sig om de 3 her er jeg egentlig godt tilfreds :-)
Avatar billede suppenudel Nybegynder
10. januar 2011 - 10:07 #15
hrc -> Lægger du et svar?
Avatar billede jimmydk Nybegynder
12. januar 2011 - 12:29 #16
Har du prøvet at checke alle dine varchar for at sikre de ikke er større end det max der er sat.?

Men hvis din string samlet længde er mere end 8000 tegn, så er det grunden til den fejler.
http://books.google.dk/books?id=qf7Wuhnq3ZQC&pg=PA57&lpg=PA57&dq=mssql+string+character+limits&source=bl&ots=vwtND5OsCN&sig=O8UGQ52vMaHNOtJfO8HfdVtwuZ4&hl=da&ei=HJAtTaf4LYKSOsz_3fgJ&sa=X&oi=book_result&ct=result&resnum=3&ved=0CC0Q6AEwAg#v=onepage&q&f=false
Avatar billede Syska Mester
12. januar 2011 - 14:31 #17
Ja, men så ville der jo ikke kunne komme flere tegn ud i editoren alligevel ... og hvor skulle den truncate så kommer fra ?
Avatar billede suppenudel Nybegynder
28. maj 2011 - 13:29 #18
Lukker - takker for hjælpen, men måtte slette de pågældende poster..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester