Feld von int in varchar ändern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Feld von int in varchar ändern

    Hallo zusammen.

    Ich hätte da eine Frage zu der ich leider keine Antwort finde (auch nicht mit Hilfe von google).
    Es handelt sich um eine MySQL-Datenbank die bereits produktiv genutzt wird. Jetzt ist den Anwendern eingefallen, dass Sie in einem Feld doch nicht nur Zahlen, sondern auch Buchstaben bräuchten. Meine Frage daher wäre: Kann ich den Typ von diesem Datenfeld einfach von int auf varchar ändern, ohne das ich mit Datenverlust rechnen muss?

    Habe so eine Situtation bis jetzt noch nicht gehabt und wollte mich deshalb lieber im Vorfeld absichern :)
    ~ rock on ~
  • Absichern tust du dich am besten indem du es auf einem Testsystem ausprobierst ;)
    Würde mich freuen, wenn du von deinen Ergebnissen berichtest.

    Ansonsten musste ich vor kurzem ein ENUM umstellen - hier ging es nicht automatisch und ich habe mir eine temporäre Spalte angelegt:

    Quellcode

    1. -- enum is different
    2. ALTER TABLE `follower` ADD `privprof2` TINYINT( 1 ) NOT NULL DEFAULT '0';
    3. UPDATE follower SET privprof2 = IF(privprof='1',1,0);
    4. ALTER TABLE follower DROP privprof;
    5. ALTER TABLE follower CHANGE privprof2 privprof TINYINT( 1 ) NOT NULL DEFAULT '0';
  • d0nut schrieb:

    Absichern tust du dich am besten indem du es auf einem Testsystem ausprobierst ;)


    Wenn man soetwas nicht zu Verfügung hat, brauchst du ja einfach nur die besagte Tabelle zu kopieren, was auf das selbe hinausläuft :)

    Quellcode

    1. INSERT INTO bak_tableA SELECT * FROM tableA


    Afaik müsste sogar die Struktur automatisch angelegt werden.
  • Hallo Zusammen.

    Die direkte Typ-Konvertierung von int nach varchar ist leider nicht möglich. Zumindest meckert MySQL wenn ich das machen möchte.
    Ich werde es jetzt so machen wie d0nut vorgeschlagen hat. Einfach eine temporäre Spalte anlegen und über diese die Daten Sichern und anschließend dieser temporären Spalte den eigentlich richtigen Namen zuweisen. Das ganze Szenario hab ich in einem Testsystem schon erfolgreich durchgespielt. Hat alles wunderbar funktioniert :)

    Besten Dank für eure Tipps und Anregungen!
    ~ rock on ~