anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: So 15 Jun, 2025 20:49

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit ENUM
BeitragVerfasst: Mi 14 Mär, 2007 19:46 
Offline
Held
Held

Registriert: Sa 18 Feb, 2006 19:07
Beiträge: 243
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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:01 
Offline
Großmeister
Großmeister

Registriert: Fr 21 Jul, 2006 00:00
Beiträge: 416
Zeig erstmal die Fehlermeldung die PHPmyAdmin ausgibt weil ohne die kann man auch nicht wirklichw as näheres sagen ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:03 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Für mich klingt es eigentlich so, als ob er andere Werte übermittelt, als in eben diesem enum-Feld zur Auswahl gestellt wurden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:07 
Offline
Held
Held

Registriert: Sa 18 Feb, 2006 19:07
Beiträge: 243
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)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:09 
Offline
Großmeister
Großmeister

Registriert: Fr 21 Jul, 2006 00:00
Beiträge: 416
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...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:11 
Offline
Held
Held

Registriert: Sa 18 Feb, 2006 19:07
Beiträge: 243
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:15 
Offline
Großmeister
Großmeister

Registriert: Fr 21 Jul, 2006 00:00
Beiträge: 416
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 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:16 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
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...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:19 
Offline
Großmeister
Großmeister

Registriert: Fr 21 Jul, 2006 00:00
Beiträge: 416
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 ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:29 
Offline
Held
Held

Registriert: Sa 18 Feb, 2006 19:07
Beiträge: 243
@ 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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:32 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:33 
Offline
Großmeister
Großmeister

Registriert: Fr 21 Jul, 2006 00:00
Beiträge: 416
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 ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 20:58 
Offline
Held
Held

Registriert: Sa 18 Feb, 2006 19:07
Beiträge: 243
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 21:18 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
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?


Zuletzt geändert von Harthas am Mi 14 Mär, 2007 21:24, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 21:23 
Offline
Held
Held

Registriert: Sa 18 Feb, 2006 19:07
Beiträge: 243
Zitat:
Servermeldungen
Hinweis: Es sind keine Meldungen vorhanden!
Meldungstyp: Fehler
:(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 21:28 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 22:13 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi 14 Mär, 2007 22:16 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
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.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 18 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum