mysql Prob

the_condor

Registered User
Hallo,

ich habe ein kleines Problem, ich habe da ein Script was nicht mehr Supported wird.

Das Script ist für php4 und mysql4 geschrieben worden, ich benutze aber php5 und mysql5 beides in der Aktuellen Version.

Ich bekomme nun bei dem Einlessen der Datenbank diese Fehler:

PHP:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'out int(11) NOT NULL default '0',
  out_past int(11) NOT NULL default '0',
  hit' at line 1

und hier der SQL Code:
PHP:
CREATE TABLE mtl_sites (
  id int(11) NOT NULL auto_increment,
  owner int(11) NOT NULL default '0',
  owner_accept tinyint(2) NOT NULL default '0',
  date varchar(50) NOT NULL default '',
  a_admin tinyint(4) NOT NULL default '0',
  a_ban tinyint(4) NOT NULL default '0',
  a_hide tinyint(4) NOT NULL default '0',
  cat int(11) NOT NULL default '0',
  site_name varchar(250) NOT NULL default '',
  site_desc varchar(250) NOT NULL default '',
  site_url varchar(250) NOT NULL default '',
  site_banner varchar(250) NOT NULL default '',
  site_moment tinyint(4) NOT NULL default '0',
  in_webring tinyint(2) NOT NULL default '0',
  notepad text NOT NULL,
  notepad_size int(11) NOT NULL default '0',
  comments int(11) NOT NULL default '0',
  votes int(11) NOT NULL default '0',
  votes_past int(11) NOT NULL default '0',
  out int(11) NOT NULL default '0',
  out_past int(11) NOT NULL default '0',
  hits int(11) NOT NULL default '0',
  hits_past int(11) NOT NULL default '0',
  rating_total int(11) NOT NULL default '0',
  rating int(11) NOT NULL default '0',
  rating_past int(11) NOT NULL default '0',
  KEY id (id)
) TYPE=MyISAM

Denn Fehler am Ende der Tabelle also KEYid (id) habe ich durch PRIMARY KEY (id) ersetzt, leider macht er mir hier out int(11) NOT NULL default '0' immer noch Problemme. Ich habe einfach nix gefunden wie ich das behandeln könnte.
Ich habe das bei einem Kumpel unter mysql4 installiert und da funzt das Super.

Wer kann mir eine kleine Hilfe stellung geben

edit://

Das Problem ist das out bei mysql5 schon benutzt wird, also vergeben ist.

mfg
the_condor
 
Last edited by a moderator:
Ich habe den Fehler mit MySQL 5.0.24 gerade reproduziert. Der Fehler an sich ist einfach zu beheben.

Ersetze
Code:
out int(11) NOT NULL default '0',
durch
Code:
out_dummy int(11) NOT NULL default '0',
und schon geht es.

Aber die Lösung wird so alleine nichts bringen, weil die PHP-Applikation natürlich davon ausgeht, dass es eine Spalte mit dem Namen "out" gibt.

Hier gibt es nur eine Lösung: Du musst alle Datebankabfragen im Quellcode finden und "out" durch "out_dummy" ersetzen.

Beispiel:
Du könntest
Code:
SELECT id, out FROM mtl_sites WEHRE out > 527;
durch
Code:
SELECT id, out_dummy AS `out` FROM mtl_sites WEHRE out_dummy > 527;
ersetzen. Wird in der PHP-Applikation auf die spalte mittels "$row['out']" zugegriffen, würde der oben genannte Query in PHP weiter funktionieren, weil es für PHP die Spalte "out" weiter gibt.

Es könnte auch sein, dass Du beim Erzeugen der Tabelle einfach anstatt
out
die "gequotete" Version
`out`
Verwenden kannst, aber ich glaube nicht, dass die Programmierer im PHP-Code auf diese Besonderheit geachtet haben, denn jedes "SELECT out ..." läuft natürlich auch vor die Wand.

Sinnvoller wäre einen Ersatz für die Software zu suchen, denn zumindest von MySQL haben die nicht viel Ahnung sonst würden sie
Code:
date DATE NOT NULL default '0000-00-00',
verwenden anstatt
Code:
date varchar(50) NOT NULL default '',
oder einen UNIX-Timestamp, wie es beim phpBB oder dem SMF ist.

Gruß
Claus
 
Last edited by a moderator:
Back
Top