anpera.net
https://anpera.dyndns.org/phpbb3/

Problem mit ENUM
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=3453
Seite 1 von 1

Autor:  Leen [ Mi 14 Mär, 2007 19:46 ]
Betreff des Beitrags:  Problem mit ENUM

Hallihallo,

mal wieder ist es passiert, meine Datenbank nimmt UPDATEs nicht an, wenn der Typ ENUM ist. Es ist wirklich eigenartig :?

Durch einige Fehlermeldungen weiß ich, dass die Daten richtig vermittelt werden, aber dieses Feld mit ENUM will sich einfach nicht ändern :cry: , erst wenn ich es in TINYINT umändere werden die Daten eingetragen.

Hat jemand vielleicht eine Idee wieso das so ist?

Autor:  Kamui [ Mi 14 Mär, 2007 20:01 ]
Betreff des Beitrags: 

Zeig erstmal die Fehlermeldung die PHPmyAdmin ausgibt weil ohne die kann man auch nicht wirklichw as näheres sagen ^^

Autor:  Harthas [ Mi 14 Mär, 2007 20:03 ]
Betreff des Beitrags: 

Für mich klingt es eigentlich so, als ob er andere Werte übermittelt, als in eben diesem enum-Feld zur Auswahl gestellt wurden.

Autor:  Leen [ Mi 14 Mär, 2007 20:07 ]
Betreff des Beitrags: 

Also erstmal, es gibt keine Fehlermeldung, die gabs nur wegen einigen falschen Zeichen und da war das Feld "allowed"=1 zu sehen, aber nach Fehlerbereinigung war trotz mehrfachem Speicherns das Feld "allowed" weiterhin = 0

Nun es gab bei ENUM die Auswahl 0 oder 1 .. auf 0 stand es und wollte nicht auf 1 gehen, versteht ihr?

EDIT: Wenn ich aber mit 1 speicher steht auch die 1 drin, wenn ich es dann auf 0 ändern wollte ging es wieder nicht (durch Script)

Autor:  Kamui [ Mi 14 Mär, 2007 20:09 ]
Betreff des Beitrags: 

Hmm kann vielleicht daran liegen das das Feld als Zahl übermittelt wird und nicht als Zeichenkette da ENUM eigendlich ein Zeichenkettentyp ist
In welchem Skript tritt der Fehler auf ich vermute mal im Farbeneditor wenn du schon von allowed sprichst...

Autor:  Leen [ Mi 14 Mär, 2007 20:11 ]
Betreff des Beitrags: 

Aber müssten dann andere nicht auch das Problem haben? Gut ich weiß von noch einem Server wo das Problem auch bestand, aber das ist nur ein geringer Prozentsatz aller Server .. also das jetzige Problem war der Editor zum Farbenhack von Eliwood, und da gabs auch einer der das Problem hatte.

Ich hatte dieses Problem auch schon mit dem Kindermod und mit einigen anderen kleinen, wo ich sofort den Typ in tinyint umgeändert habe

Autor:  Kamui [ Mi 14 Mär, 2007 20:15 ]
Betreff des Beitrags: 

Hmm ich hatte das Problem auch oder habs noch aber ich mache nicht viel mit dem Farbeneditor sondern Trags direkt in die DB ein deswegen weiss ich es nun nicht genau ^^*
Naja suche mal in der colors.php
[php]
$sql = "UPDATE appoencode SET code='".$code."', color='".$color."', tag='".$tag."', style='".$style."', allowed=$all WHERE id='".$_GET[id]."'";
[/php]

Und ersetze es durch:
[php]
$sql = 'UPDATE appoencode SET code="'.$code.'", color="'.$color.'", tag="'.$tag.'", style="'.$style.'", allowed="'.$all.'" WHERE id='.$_GET[id].'';

[/php]

Und versuch dann nochmal obs klappt da id auch als Zeichenkette übergeben wird o.O sollte eigendlich auch nicht so richtig sein aber naja probiers mal so ;)

Autor:  Harthas [ Mi 14 Mär, 2007 20:16 ]
Betreff des Beitrags: 

Frage: Verwendest du MySQL-Datenbanktyp oder InnoDB?

Und nein, daran dass eine integere Zahl übermittelt wird, liegts mit Sicherheit nicht, hab oft genug schon mit Zahlen und ENUM gearbeitet ;-)

Aber möglicherweise macht die MySQL Version da so ihre Probleme...

Autor:  Kamui [ Mi 14 Mär, 2007 20:19 ]
Betreff des Beitrags: 

Wie du sagst Hathas auf die SQL Version kommt es an ;)
Meine macht z.B. auch so seine Probleme wenn ich ein Datentyp mit ENUM habe und die Werte z.B. Zahlen nicht in Hochkomma schreibe da passiert auch nichts ;)

Autor:  Leen [ Mi 14 Mär, 2007 20:29 ]
Betreff des Beitrags: 

@ kamui, dass was du da vorgeschlagen hast ist im Standard drin @ farbeneditor, jedenfalls hatte ich es bisher drin

@ all: ja ich hab ja auch das Gefühl das es vll am MySQL liegt, aber seltsam ist es doch trotzdem

Ich nutze jedenfalls nur MySQL und ich habe alleinigen Zugriff, deswegen hab ich den Editor drin, damit meine Co-Admins da auch Farben eintragen bzw. ändern können

Autor:  Harthas [ Mi 14 Mär, 2007 20:32 ]
Betreff des Beitrags: 

Hmm...

Ich werde hier Lokal noch einige Test's dazu machen...
Muss nur eben ein Problem bei PHP als fastCGI beheben.
(Lässt mir den Server abstürzen ^^')

Welche exakte MySQL-Version verwendest du?
Und welche PHP-Version?

Autor:  Kamui [ Mi 14 Mär, 2007 20:33 ]
Betreff des Beitrags: 

o.O den Teil den du ersetzen sollst hab ich aus deiner Datei raus kopiert ^^*
Also kann es schlecht sein das du ihn drin hattest ^^
Hmm nun wie gesagt wenn das Feld vom Typ ENUM ist sollte man das ganze Als String übergeben und nicht als Zahl ^^

Autor:  Leen [ Mi 14 Mär, 2007 20:58 ]
Betreff des Beitrags: 

Kamui hat geschrieben:
o.O den Teil den du ersetzen sollst hab ich aus deiner Datei raus kopiert ^^*
Also kann es schlecht sein das du ihn drin hattest ^^
Hmm nun wie gesagt wenn das Feld vom Typ ENUM ist sollte man das ganze Als String übergeben und nicht als Zahl ^^


Ich habe den ganzen Nachmittag damit experimentiert und ja ich hatte es erst so drin, kann sein das es inzwischen anders ist, wie gesagt, ich habs nun mit dem tinyint gelöst

@ Harthas: PHP Version 4.4.0-4
mysql
MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 4.1.15
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_INCLUDE -I/usr/include/mysql
MYSQL_LIBS -L/usr/lib -lmysqlclient

Auch zu sehen hier

Autor:  Harthas [ Mi 14 Mär, 2007 21:18 ]
Betreff des Beitrags: 

Hm...
Habe gerade nichts gefunden...

Und mit Zend Core 2 kann ich es auch nicht testen, da dort PHP 5.2.1 und MySQL 5.0.27-community-nt laufen.

Hm... Auch Google kennt da nichts...
Hast du Zugriff auf den Error-Log des Servers?
Möglicherweise fände sich da einen Hinweis...

EDIT: Habe beim weiteren rumschnüffeln etwas entdeckt... Es scheint immer wieder mal Probleme mit enum/set und dem Charakter-Set utf8 zu geben... Verwendest du UTF8 als Standart-Charset?

Autor:  Leen [ Mi 14 Mär, 2007 21:23 ]
Betreff des Beitrags: 

Zitat:
Servermeldungen
Hinweis: Es sind keine Meldungen vorhanden!
Meldungstyp: Fehler
:(

Autor:  Harthas [ Mi 14 Mär, 2007 21:28 ]
Betreff des Beitrags: 

Hm... Und auf die Datei error.txt kannst du nicht zugreifen?

Zitat:
EDIT: Habe beim weiteren rumschnüffeln etwas entdeckt... Es scheint immer wieder mal Probleme mit enum/set und dem Charakter-Set utf8 zu geben... Verwendest du UTF8 als Standart-Charset?


Und dies hier?

Autor:  Eliwood [ Mi 14 Mär, 2007 22:13 ]
Betreff des Beitrags: 

Mir fällt dazu was ein:
Es kann sein, dass ein '1' bei enum nicht das gleiche wie 1 ist. Ich behaupte mal, dass MySQL bei enum '1' als Zeichen angsehen wird und der entsprechende Integerwert zurück gegeben wird - 49 halt, sowohl mit UTF-8 als auch in ANSI.

Autor:  Harthas [ Mi 14 Mär, 2007 22:16 ]
Betreff des Beitrags: 

Wir haben den Fehler entdeckt.
Der erste Wert bei enum sollte 1 sein ;-)

enum('1','0') anstatt enum('0','1').

Ich weiss nicht mehr genau, wieso das so sein sollte, hatte es heute Abend allerdings gelesen. Man könnte wohl theoretisch auch den Datentyp bool nehmen...

Hier den Links zur Quelle.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/