php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Wie kann ich die varchar Größe nachträglich ändern?


 
HansDerLange
23-07-2008, 15:00 
 
Hallo,

ich habe eine Tabelle mit urls drinne und mochte den varchar(50) wert in der spalte url nachträglich auf varchar(1024) erhöhen.

ich habe das ausprobiert:

ALTER TABLE `beitraege` ALTER COLUMN `url` varchar(1024);


aber es funzt nicht..

thank im voraus!

 
TobiaZ
23-07-2008, 15:11 
 
varchar(1024); MySQL Version? Fehlermeldung?

 
case
23-07-2008, 15:12 
 
Tja, varchar geht leider nur bis 255 Zeichen ;)

Da musst du wohl schon ein Text-Feld nehmen. Sie sind aber noch um einiges größer (65,535 Zeichen)

 
jahlives
23-07-2008, 15:13 
 
ALTER TABLE tablename MODIFY columnname varchar(100);

 
TobiaZ
23-07-2008, 15:14 
 
Original geschrieben von case
Tja, varchar geht leider nur bis 255 Zeichen ;)Das ist so nicht (mehr) ganz richtig:

[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name]

A variable-length string. M represents the maximum column length in characters. The range of M is 0 to 65,535. The effective maximum length of a VARCHAR is subject to the maximum row size (65,535 bytes, which is shared among all columns) and the character set used. For example, utf8 characters can require up to three bytes per character, so a VARCHAR column that uses the utf8 character set can be declared to be a maximum of 21,844 characters.

MySQL stores VARCHAR values as a one-byte or two-byte length prefix plus data. The length prefix indicates the number of bytes in the value. A VARCHAR column uses one length byte if values require no more than 255 bytes, two length bytes if values may require more than 255 bytes.

 
case
23-07-2008, 15:15 
 
Original geschrieben von TobiaZ
Fehlermeldung?

Ich habe es übrigens mal kurz ausprobiert: Es kommt keine Fehlermeldung, es funktioniert einfach nicht... aber es ist natürlich die Länge...

 
TobiaZ
23-07-2008, 15:21 
 
Original geschrieben von case
Ich habe es übrigens mal kurz ausprobiert: Es kommt keine Fehlermeldung, es funktioniert einfach nicht... aber es ist natürlich die Länge... Auch hier die Frage nach der eingesetzten Version?

 
case
23-07-2008, 15:23 
 
also ich habe es gerade nochmal mit utf-8 ausprobiert...

mysql 4.1.11:

bei utf-8:

aus varchar > 255 wird einfach ein Text-Feld

bei latin_1:

es gibt keine Fehlermeldung und es passiert einfach nichts


mysql 5.0.45:

man kann größere VarChar-Felder anlegen, egal welche kollation

 
H2O
23-07-2008, 15:23 
 
Original geschrieben von case
Ich habe es übrigens mal kurz ausprobiert: Es kommt keine Fehlermeldung, es funktioniert einfach nicht... aber es ist natürlich die Länge... Dann hast du die unterdrückt, weil die Syntax ist ganz klar falsch:
ALTER TABLE `tab2` ALTER COLUMN `name` VARCHAR( 1024 )
führt zu
#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei 'varchar(1024)' in Zeile 1

 
TobiaZ
23-07-2008, 15:28 
 
ALTER TABLE `tbl` CHANGE `fld` `fld` VARCHAR(1024)

 
case
23-07-2008, 15:33 
 
nein, ich habe einfach nur den Versuch gemacht, es zu ändern und habe nicht die Syntax des TS verwendet...

 
HansDerLange
23-07-2008, 16:47 
 
Danke !


ALTER TABLE `tbl` CHANGE `fld` `fld` VARCHAR(1024);



hat funktionier!


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:23 Uhr.