Ganzzahl zu Fließkommazahl
Eingetragen von torfnase (1525)
am 23.08.2018 - 16:41 Uhr in
am 23.08.2018 - 16:41 Uhr in
Hallo zusammen,
bei einem Datenfeld (Custom Entitys) wird wohl eine Umstellung von Ganzzahl auf Fließkommazahl notwendig sein.
Drupal sieht so etwas ja nicht ohne Weiteres vor.
Wenn ich mir allerdings zwei Datenfelder (Ganzzahl und Fließkommzahl) in der Datenbank anschaue, dann ist die ein int(11) und die andere float.
Nun ist die Frage, ob es vielleicht doch geht, den Typ in der DB direkt zu ändern.
Hat jemand von euch so etwas schon mal gemacht.
Neues Feld anlegen und altes Feld löschen ist aus anderen Gründen keine so gute Lösung für mich.
Gruß
Berthold
- Anmelden oder Registrieren um Kommentare zu schreiben
nein
am 23.08.2018 - 19:21 Uhr
der strukturelle Unterschied lässt sich nicht wegbügeln,
Du brauchst für die Umstrukturierung beide Felder, ansonsten hast du wilde Zahlen in der Datenbank.
Grüße
Ronald
Hallo Ronald,ich weiß nicht,
am 23.08.2018 - 19:41 Uhr
Hallo Ronald,
ich weiß nicht, was du damit sagen willst.
Ich hatte mir folgendes vorgestellt:
Es gibt ein Ganzzahlfeld, z.B. field_zahl.
Ich gehe dann in die DB und ändere die Struktur der Tabelle field_data_field_zahl und field_revision_field_zahl z.B. mit dem PHPMyAdmin um von int(11) nach float.
Die Frage ist, ob es das zu weiteren Problemen führt, oder ob Drupal das verkraftet.
Drupal Video-Tutorials
Ohne die Seite zu kennen kann
am 23.08.2018 - 22:54 Uhr
Ohne die Seite zu kennen kann Dir das wohl niemand beantworten.
Grundsätzlich sollte es für Drupal eigentlich keine Probleme machen, da die Arithmetik ja die selbe ist.
Bei Views allerdings kann ich mir vorstellen dass falsch gerechnet wird.
Wenn im PHP Code ein parseInt() vorkommt, dann wird eine Integer ausgegeben/berechnet wird und keine Fliesskommazahl.
Ich würde an Deiner Stelle besser ein neues Fliesskommafeld in Drupal anlegen und dann einfach die Daten des int Feldes
per SQL in die float Tabellen kopieren.
MfG
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
ich werde es mal lokal
am 23.08.2018 - 23:38 Uhr
ich werde es mal lokal testen.
Es ist schon klar, dass man sämtlichen Programmcode nach der Variable durchsuchen muss und auch alle Views checken muss.
Das ist bei mir aber unproblematisch.
Nach den Tests schreibe ich das noch mal.
Vielen Dank für eure Antworten
Berthold Lausch
Drupal Video-Tutorials
Ok ich bin damit durch und es
am 24.08.2018 - 18:09 Uhr
Ok ich bin damit durch und es funktioniert offenbar einwandfrei.
Folgende Schritte muss man dafür gehen: (field_zahl sei das Feld, um das es geht)
1. in den Tabellen field_data_field_zahl und field_revision_field_zahl die Spaltenstruktur von z.B. int(11) auf float setzen.
2. in der Tabelle: field_config den type auf number_float setzen, stand vorher auf number_integer
In der Tabelle field_config ist auch noch gespeichert, ob ein Dezimalkomma oder ein Dezimalpunkt verwendet werden soll.
Man kann das leicht im Drupal-Backend einstellen unter Felder Bearbeiten. Das ist einfacher als in der field_config die data Spalte zu ändern, die ist nämlich BLOB.
3. und letzte Änderung: Man muss in der Tabelle field_config_instance die Spalte data ändern und das ist auch ein BLOB.
in dieser Spalte ist das Scaling gespeichert, d.h. wie viele Nachkommastellen angezeigt werden. Das Scaling z.B. auf 2 gesetzt und fertig.
So kann man aus einem Ganzzahlfeld ein Fließkommafeld machen.
Die ersten zwei Punkte sind trivial und sehr schnell zu erledigen. Das BLOB abzuändern ist nicht ganz so einfach.
Meine Lösung: Ich habe noch einen alten PHPMyAdmin 3.2.4 (läuft bei mir noch auf einem alten Linux Notebook)
Mit dem kann man BLOB als unserialized bearbeiten, das reicht vollkommen aus, man muss ja nur eine Zahl austauschen (als 0 mach 2)
Hat jemand von euch eine bessere Lösung für das Ändern eines BLOB in einer Mysql-Tabelle ?
Daran wäre ich grundsätzlich interessiert.
Gruß
Berhold
Drupal Video-Tutorials
mittlerweile habe ich auch am
am 24.08.2018 - 23:45 Uhr
mittlerweile habe ich auch am meinem php 7.2.8 die alte Version des phpMyadmin 3.4.2 zum laufen gebracht.
Damit kann ich dann die BLOB Daten einfach bearbeiten.
Warum haben die das wohl in den neuen PHPMyAdmin Versionen herausgenommen ?
Da gibt es zwar bei der Ansicht noch die Möglichkeit, die BLOBs als unserialized anzuschauen, wenn man dann aber den "Bearbeiten" Button klickt, sieht man nur noch eine HEX-Darstellung.
Da kann man dann gar nichts mehr editieren.
Merkwürdig, nicht wahr...
Gruß
Berthold
Drupal Video-Tutorials
Also, ich finde das nicht
am 25.08.2018 - 08:50 Uhr
Also, ich finde das nicht merkwürdig.
Du kannst duch nicht darauf verlassen, das in diesem Feld ein serialisierter String liegt.
Immerhin ist ein BLOB ein binary Large Objekt und KEIN serialisierter String.
Soll heissen MYSQL ist es egal was für eine binaräre Datei in dem Feld hinterlegt wird.
Gruss
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Hast du Glück gehabt
am 25.08.2018 - 20:32 Uhr
dass die Inhalte serialisiert vorlagen.
Wären sie binär gewesen, hättest du keine Freude daran gehabt.
Grüße
Ronald
@Werner Wie siehst du das
am 27.08.2018 - 15:52 Uhr
@Werner
Wie siehst du das denn ? .... es geht dabei natürlich um FRIEDA.
Meinst du, dass das problematisch ist ?
Drupal Video-Tutorials