Spaltentyp ändern

ribart

Benutzer
Beiträge
10
Hallo,
in meiner Datenbank bearbeite ich eine Tabelle, in der einige Spalten als INT definiert sind. Nun muss ich die Definition auf FLOAT ändern und habe das in dem Programm MySQL Query Browser versucht, aber jede Änderung erzeugt eine Fehlermeldung 1064 (fehlerhafte Syntax).

ALTER-Anweisung:
ALTER TABLE `mineralien_verwaltung`.`etiketten` MODIFY COLUMN `offsetoben` FLOAT[(5,1)] NOT NULL DEFAULT '0';

Wo liegt in obiger Anweisung der Fehler???

Danke!!!

Richard
 
Werbung:
Code:
test=# create table bla(i int);
CREATE TABLE
test=*# alter table bla alter COLUMN i type float;
ALTER TABLE
test=*# rollback;
ROLLBACK

PostgreSQL. Möglicherweise hält sich MySQL da an den Standard.
 
ALTER TABLE `mineralien_verwaltung`.`etiketten` MODIFY COLUMN `offsetoben` FLOAT[(5,1)] NOT NULL DEFAULT '0';
1. Warum setzt du einen String als default?
2. Was soll dieses "[(5,1)]" ?

Alternativ:
Code:
Alter Table etiketten Add temp_col Float(5,1) Not Null Default 0;
Update etiketten Set temp_col = offsetoben;
Commit;
Alter Table etiketten Drop offsetoben;
Alter Table etiketten Change temp_col offsetoben Float(5,1);
Geht wahrscheinlich auch?

Edit:
NVM... 2 Sec gegoogelt:
Code:
Alter Table etiketten Modify offsetoben Float(5,1) Not Null Default 0;
 
Hallo,
vielen Dank für die schnelle und kompetente Antwort. Die Umsetzung auf den neuen Tabellentyp hat funktioniert.

Ein Problem habe ich noch mit der Umsetzung der alten Daten, die als Integer in die DB eingestellt wurden, in FLOAT umzusetzen. Ich nehme an, dass man das nicht soeinfach perhand machen kann sondern man muss das wahrscheinlich maschinell einlesen und in eine neue Tabelle einstellen, die alte löschen und dann umbenennen.

An distilec:
1. Warum setzt du einen String als default?
2. Was soll dieses "[(5,1)]" ?

Ich habe mit dem mysql query browser versucht die Tabelle zu modifizieren und der hat den Befehl zum modifizieren wie oben gezeigt angelegt. Im Original steht da auch eine Null, nach dem kopieren sieht der Default Wert wie ein o aus. Mir ist das leider nicht aufgefallen. Die Formatangabe [(5,1)] steht so im mysql Handbuch.

Richard
 
Werbung:
Die Umsetzung auf den neuen Tabellentyp hat funktioniert.
Tabellentyp? Nein...
Ein Problem habe ich noch mit der Umsetzung der alten Daten, die als Integer in die DB eingestellt wurden, in FLOAT umzusetzen. Ich nehme an, dass man das nicht soeinfach perhand machen kann sondern man muss das wahrscheinlich maschinell einlesen und in eine neue Tabelle einstellen, die alte löschen und dann umbenennen.
Code:
Update deine_table Set neue_spalte = alte_spalte;
Implizite Konvertierung ist ja schon was schönes?
Ich habe mit dem mysql query browser versucht die Tabelle zu modifizieren und der hat den Befehl zum modifizieren wie oben gezeigt angelegt.
Und da lag der Fehler...

Vielleicht hier nocheinmal die Anmwekung: Ich komme aus der Oracle-Ecke... D.h. ich benutze eine funktionierende Datenbank, kann sein das MySQL sich etwas anders verhält...
 
Zurück
Oben