/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
varchar -> float eller int?
Fra : Kim Emax


Dato : 15-01-06 14:49

Hey all

Sidder og skal rette en uheldigt oprettet tabel for en kunde og undrer
mig over, hvorfor jeg får denne fejl:

mysql> alter table baade change pris pris int(10) NOT NULL default '';
ERROR 1005: Can't create table './test/#sql-943_5b864.frm' (errno: 140)

Jeg kan uden problemer ændre størrelsen på varchar fra 30 til 35 og der
er masser af diskspace på serveren, så det er heller ikke årsagen til
fejlmeddelsen. Jeg har sikret data, så de alle er rene tal nu, der er
ingen ., eller spaces, men måske har mysql en sikring mod denne type
ændringer tænker man så? Men opretter jeg en anden tabel med et varchar
felt og sætter værdien i feltet til at være 12.00, så kan jeg sagtens
lave en alter table til int, så jeg er sgu lidt forundret og er
nysgerrig for årsagen, hvis andre skulle kende til dette problem

mysql> desc baade;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| baadid | int(11) | | PRI | NULL | auto_increment |
| overskrift | varchar(255) | | MUL | | |
| baadnavn | varchar(255) | | | | |
| beskrivelse | text | | | | |
| pris | varchar(35) | | | | |


--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
Konsulentbistand, programmering, design & hosting.
http://www.masterminds.dk

 
 
esj (15-01-2006)
Kommentar
Fra : esj


Dato : 15-01-06 21:45

On Sun, 15 Jan 2006 14:49:08 +0100, Kim Emax <newsgroup@emax.dk>
wrote:

>Hey all
>
>Sidder og skal rette en uheldigt oprettet tabel for en kunde og undrer
>mig over, hvorfor jeg får denne fejl:
>
>mysql> alter table baade change pris pris int(10) NOT NULL default '';

du har sikkert skrevet forkert ... er det ikke: ... NOT NULL default 0
;

>ERROR 1005: Can't create table './test/#sql-943_5b864.frm' (errno: 140)
>
>Jeg kan uden problemer ændre størrelsen på varchar fra 30 til 35 og der
>er masser af diskspace på serveren, så det er heller ikke årsagen til
>fejlmeddelsen. Jeg har sikret data, så de alle er rene tal nu, der er
>ingen ., eller spaces, men måske har mysql en sikring mod denne type
>ændringer tænker man så? Men opretter jeg en anden tabel med et varchar
>felt og sætter værdien i feltet til at være 12.00, så kan jeg sagtens
>lave en alter table til int, så jeg er sgu lidt forundret og er
>nysgerrig for årsagen, hvis andre skulle kende til dette problem
>
>mysql> desc baade;
>+-------------+--------------+------+-----+---------+----------------+
>| Field | Type | Null | Key | Default | Extra |
>+-------------+--------------+------+-----+---------+----------------+
>| baadid | int(11) | | PRI | NULL | auto_increment |
>| overskrift | varchar(255) | | MUL | | |
>| baadnavn | varchar(255) | | | | |
>| beskrivelse | text | | | | |
>| pris | varchar(35) | | | | |


Kim Emax (16-01-2006)
Kommentar
Fra : Kim Emax


Dato : 16-01-06 16:55

esj wrote:

>>mysql> alter table baade change pris pris int(10) NOT NULL default '';
>
> du har sikkert skrevet forkert ... er det ikke: ... NOT NULL default 0
> ;

Det kunne jeg godt have skrevet at jeg havde prøvet. Barberede den helt
ned ved at fjerne not null og default. Men du kan have en pointe

/Kim

Kim Emax (16-01-2006)
Kommentar
Fra : Kim Emax


Dato : 16-01-06 17:00

Kim Emax wrote:

> Det kunne jeg godt have skrevet at jeg havde prøvet. Barberede den helt
> ned ved at fjerne not null og default. Men du kan have en pointe

Måtte lige teste det, nu er det et int felt (løste det ved at lave et
mysqldump --add-drop-table og hældte det ind igen):

mysql> alter table baade change pris pris varchar(30) not null default '';
Query OK, 43 rows affected (0.10 sec)
Records: 43 Duplicates: 0 Warnings: 0

mysql> alter table baade change pris pris int(30) not null default '';
Query OK, 43 rows affected (0.01 sec)
Records: 43 Duplicates: 0 Warnings: 0

Altså ingen forskel. Min konklusion er at der har nok på en eller anden
måde været noget korrupt data som mysql ikke kunne konvertere...

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
Konsulentbistand, programmering, design & hosting.
http://www.masterminds.dk

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408921
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste