Diese Board wurde aus Spamschutz-Gründen auf minimale Funktionen beschränkt.
Nutze für neue Anfragen/Bug-Reports bitte meine Gitlab-Instanz.

Datenbank Problem

Hilfe bei Installation oder einem Update der Filmverwaltung. Behebung von aufgetretenen Fehlern

Moderator: Lifestyle

Jonesy

Datenbank Problem

Beitrag von Jonesy »

Hallo domi,

ich hab schon seit langer zeit deine Filmverwaltung und nun hab ich folgendes problem und währe froh wenn du mir helfen könntest:

nur zur vollständigkeit die vorgeschichte:
ich hab mal den server auf dem die filmverwaltung lief neu installiert, zuvor hab ich aber noch ein mysql backup von der datenbank gemacht.

nach der neuinstallation habe ich dann wieder importiert und es funktionierte wieder...(kurz eingeloggt, kurz rumgebrowst, ausgeloggt)
danach habe ich upgedated auf die neuste version

heute wollte ich wieder neue Filme hinzufügen...leider bekomme ich immer folgenden Fehler von mysql, und der film wird folglich nicht eingetragen
INSERT INTO filme_FILME (inserted, USERS_UserID) VALUES ( now(), 1 )

Field 'Inhalt' doesn't have a default value

INSERT INTO filme_DISCS (DiscID,FILME_FilmID) VALUES (196,0)

Duplicate entry '196-0' for key 1
die restlichen funktionen scheinen alle zu funktionieren

noch ein paar daten:
Apache/2.0.58 PHP/5.1.4 + MySQL 5.0
datenbank exportiert mit phpmybackuppro
und wieder importiert mit bigdump(.php)

ich bedanke mich schonmal im vorraus für jegliche mühe

danke
Jonesy
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Re: Datenbank Problem

Beitrag von der-domi »

Hallo,

kann es sein, dass es beim Import Probleme mit der Tabelleneigenschaft "next autoindex" der Tabelle "filme_FILME" gab?
Wie es aussieht steht dieser auf 0. Er muß auf den Wert eins höher, wie der höchste existierende.

Schaue, dass die Tabelle die Eigenschaft "auto_increment" hat. Probleme wirst du wahrscheinlich auch mit anderen Tabellen bekommen...

Das ist mein Ansatz!

Viel Eroflg!
Dominik
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Jonesy

Beitrag von Jonesy »

danke für die antwort

beim import gab es keine probleme allerdings ist bei (fast) keiner tabelle "auto_increment" eingestellt..allerdings kann ich es auch nicht umstellen (phpmyadmin meldet jedesmal einen fehler "Field '......' doesn't have a default value)

die backupdaten hab ich noch..daher denke ich ein neu-import wäre das klügste

welches import-tool würdest du empfehlen?

(gibt es dann probleme? Weil die backups sind noch für die alte version)
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Beim Ex-/Import muß es einen Fehler gegeben haben, sonst hätten die Tabellen doch eine auto_increment-Eigenschaft...

1.
Erstelle mit dem Installationsskript neue Filmdatenbanktabellen (ändere das prefix).
2.
Lösche alle default-Werte aus den neuen Tabellen.
3.
Importiere alle vorhandene Daten (nicht Struktur!) aus deiner Sicherung in die neue Tabellen.

Die Struktur kann man einfach aus der Datei herauslöschen. Kann auch beim Export mit PHPmyAdmin eingestellt werden. Einfach mal mit herumspielen.

Ich verwende nur PHPmyAdmin für solche Dinge. Kannst ja auch mal die Tools verwenden, welche es direkt bei MySQL gibt...
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Jonesy

Beitrag von Jonesy »

danke für deine einleitung aber es scheint ein größeres Problem zu sein

als ich die datenbank gelöscht und wieder erstellt hab und dann installieren wollte bekam ich dann folgendes:
INSERT INTO filme_USERS (UserID, UserName, Email, PWD, UserRechte, FilmPrivileg, FormatPrivileg, GenrePrivileg, anzLogin, getEmail, Style) VALUES (1, "Jonesy", '****@***.**', PASSWORD("*****"), 900, 1, 1, 1, 0, 0, 'style01.css')

Field 'lastLogin' doesn't have a default value

UPDATE filme_SETTINGS Wert="0" WHERE Variable="anzTopFilme"

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 '="0" WHERE Variable="anzTopFilme"' at line 1

UPDATE filme_SETTINGS Wert="0" WHERE Variable="anzNeueFilme"

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 '="0" WHERE Variable="anzNeueFilme"' at line 1

UPDATE filme_SETTINGS Wert="0" WHERE Variable="anzBestFilme"

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 '="0" WHERE Variable="anzBestFilme"' at line 1
(mit anderen php-scripts hatte ich noch keine probleme)
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Uff,

ist für die Spalte lastLogin (und auch die anderen) ein Default-Wert eingetragen? Darf die Spalte NULL sein? Ansonsten tu das! Warum auch immer das nicht sein sollte? Die entsprechenden Werte findest du im SQL-Skript unter ./install/
Sollte das nicht funktionieren, füge eine neue Zeile mit PHPmyAdmin ein und schaue, was passiert. (Bei PWD die Password-FUnktion verwenden.)

Warum die anderen Fehler auftreten habe ich keine Ahnung. Kann ich mir einfach nicht erklären. Wie sieht denn die Struktur der SETTINGS-Tabelle aus?

Welche MySQL-Version hast du denn genau?
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Jonesy

Beitrag von Jonesy »

nein war kein wert eingetragen

nen fantasie wert hat er allerdings angenommen

die Spalte darf null sein

mit php/mysql scripts hab ichs leider ned so :/

die settings tabelle sieht OK aus
`Variable` varchar(100) NOT NULL default '',
`Wert` varchar(255) NOT NULL default '',
PRIMARY KEY (`Variable`)
MySQL 5.0.22

ich hab die installation danach nochmal probiert.
mit einer ausnahme hats wieder nicht funktioniert:
statt 'lastlogin' hab ich jetzt folgendes

" Field 'Birthday' doesn't have a default value "
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Das mit dem NULL habe ich verwechselt. Die Spalten sollen nicht NULL sein! War die von Anfang an NULL oder hast du das geändert?

Was hast du denn jetzt genau gemacht, dass die Spalte lastLogin akzeptiert wird? Mach das auch mit den anderen usw.!

Schreibe die Antworten bitte genauer und nicht als Schlagwörter...
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Jonesy

Beitrag von Jonesy »

jetz weis ich nichtmehr was du meinst :/

in der Spalte "NULL" steht bei jeden eintrag "Ja"
ind der spalte Standard steht ganz oben einmal wörtlich "NULL" in kursiv und dann bei ein paar einzelnen (anzLogin , anzFehlLogin und getEmail ) numerisch "0"

bei lastlogin habe ich einfach irgendeinen wert eingegeben "2002-02-02 00:00:00 " dasselbe hab ich dann bei birthday nun auch gemacht aber jetzt springt er zum nächsten feld ohne default-wert (checkChangePWD)

soll ich jetzt von hand bei jeder spalte ein default wert setzten?(den ich ja eigentlich nicht weiß)
ist das nicht aufgabe des scripts? :/
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Aufgabe ist es, Fehler zu beseitigen. Da er bei dir als erstes auftritt, mußt du schon bissel selbst arbeiten!

Ersetze mal das SQL-Skript in ./install durch:

Code: Alles auswählen

CREATE TABLE IF NOT EXISTS PREFIX_ACTORS (  ActorID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,  Name VARCHAR(50) NOT NULL,  PRIMARY KEY(ActorID) )
CREATE TABLE IF NOT EXISTS PREFIX_COLLECT (  CollectID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,  Bezeichnung VARCHAR(50) NOT NULL,  istStandard INTEGER(1) UNSIGNED NOT NULL DEFAULT 0,  brauchtPrivileg INTEGER(2) UNSIGNED NOT NULL DEFAULT 1,  PRIMARY KEY(CollectID)  )
CREATE TABLE IF NOT EXISTS PREFIX_COVERS (  FILME_FilmID INTEGER UNSIGNED NOT NULL,  Rang SMALLINT UNSIGNED NOT NULL DEFAULT 1,  Appendix VARCHAR(10) NULL,  Extension VARCHAR(6) NULL,  hatThumbnail INTEGER(1) UNSIGNED NULL DEFAULT 0,  PRIMARY KEY(FILME_FilmID, Rang),  INDEX COVERS_FKIndex1(FILME_FilmID)  )
CREATE TABLE IF NOT EXISTS PREFIX_DISCS (  DiscID INTEGER UNSIGNED NOT NULL,  FILME_FilmID INTEGER UNSIGNED NOT NULL,  USERS_UserID INTEGER UNSIGNED NOT NULL,  ausgeliehenAm DATE NOT NULL DEFAULT '0000-00-00',  PRIMARY KEY(DiscID, FILME_FilmID),  INDEX DISCS_FKIndex1(FILME_FilmID),  INDEX DISCS_FKIndex2(USERS_UserID)  )
CREATE TABLE IF NOT EXISTS PREFIX_FILME (  FilmID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,  COLLECT_CollectID INTEGER UNSIGNED NOT NULL,  myFilmID INTEGER UNSIGNED NOT NULL,  Titel VARCHAR(255) NULL,  Originaltitel VARCHAR(255) NULL,  Jahr INT(4) NOT NULL DEFAULT 0,  Land VARCHAR(255) NULL,  Laufzeit INTEGER(4) UNSIGNED NOT NULL DEFAULT 0,  FSK INTEGER(2) UNSIGNED NOT NULL DEFAULT 0,  FSKunbekannt INTEGER(1) UNSIGNED NOT NULL,  Inhalt TEXT NULL,  Bemerkung TEXT NULL,  inserted DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',  istTopfilm INTEGER(1) UNSIGNED NOT NULL DEFAULT 0,  Webseite VARCHAR(255) NULL,  brauchtPrivileg INTEGER(2) UNSIGNED NOT NULL DEFAULT 1,  USERS_UserID INTEGER UNSIGNED NOT NULL,  FORMATE_FormatID INTEGER UNSIGNED NOT NULL,  PRIMARY KEY(FilmID),  INDEX FILME_FKIndex1(USERS_UserID),  INDEX FILME_FKIndex2(FORMATE_FormatID),  INDEX FILME_FKIndex3(COLLECT_CollectID)  )
CREATE TABLE IF NOT EXISTS PREFIX_FILME_ACTORS (  FILME_FilmID INTEGER UNSIGNED NOT NULL,  ACTORS_ActorID INTEGER UNSIGNED NOT NULL,  Rang SMALLINT UNSIGNED NOT NULL,  PRIMARY KEY(FILME_FilmID, ACTORS_ActorID),  INDEX FILME_ACTORS_FKIndex1(FILME_FilmID),  INDEX FILME_ACTORS_FKIndex2(ACTORS_ActorID)  )
CREATE TABLE IF NOT EXISTS PREFIX_FILME_GENRES (  FILME_FilmID INTEGER UNSIGNED NOT NULL,  GENRES_GenreID INTEGER UNSIGNED NOT NULL,  Rang SMALLINT UNSIGNED NULL,  PRIMARY KEY(FILME_FilmID, GENRES_GenreID),  INDEX FILME_GENRES_FKIndex1(FILME_FilmID),  INDEX FILME_GENRES_FKIndex2(GENRES_GenreID)  )
CREATE TABLE IF NOT EXISTS PREFIX_FILME_REGISSEURE (  FILME_FilmID INTEGER UNSIGNED NOT NULL,  REGISSEURE_RegisseurID INTEGER UNSIGNED NOT NULL,  Rang SMALLINT UNSIGNED NOT NULL,  PRIMARY KEY(FILME_FilmID, REGISSEURE_RegisseurID),  INDEX FILME_REGISSEURE_FKIndex1(FILME_FilmID),  INDEX FILME_REGISSEURE_FKIndex2(REGISSEURE_RegisseurID)  )
CREATE TABLE IF NOT EXISTS PREFIX_FILME_USERS (  FILME_FilmID INTEGER UNSIGNED NOT NULL,  USERS_UserID INTEGER UNSIGNED NOT NULL,  Kommentar VARCHAR(255) NULL,  zeigeNamen INTEGER(1) UNSIGNED NOT NULL DEFAULT 1,  istNeu INTEGER(1) UNSIGNED NOT NULL DEFAULT 0,  Zeitpunkt DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',  Bewertung INTEGER(2) UNSIGNED NOT NULL DEFAULT 0,  PRIMARY KEY(FILME_FilmID, USERS_UserID),  INDEX FILME_USERS_FKIndex1(FILME_FilmID),  INDEX FILME_USERS_FKIndex2(USERS_UserID)  )
CREATE TABLE IF NOT EXISTS PREFIX_FORMATE (  FormatID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,  Bezeichnung VARCHAR(50) NULL,  istStandard INTEGER(1) UNSIGNED NOT NULL DEFAULT 0,  brauchtPrivileg INTEGER(2) UNSIGNED NOT NULL DEFAULT 1,  PRIMARY KEY(FormatID)  )
CREATE TABLE IF NOT EXISTS PREFIX_GENRES (  GenreID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,  Name VARCHAR(50) NOT NULL,  brauchtPrivileg INTEGER(2) UNSIGNED NOT NULL DEFAULT 1,  PRIMARY KEY(GenreID)  )
CREATE TABLE IF NOT EXISTS PREFIX_REGISSEURE (  RegisseurID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,  Name VARCHAR(50) NOT NULL,  PRIMARY KEY(RegisseurID)  )
CREATE TABLE IF NOT EXISTS PREFIX_SETTINGS (  Variable VARCHAR(100) NOT NULL,  Wert VARCHAR(255) NOT NULL,  PRIMARY KEY(Variable)  )
CREATE TABLE IF NOT EXISTS PREFIX_USERS (  UserID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,  UserName VARCHAR(50) NOT NULL,  UserRechte INTEGER(3) UNSIGNED NOT NULL DEFAULT 300,  Email VARCHAR(50) NOT NULL,  PWD VARCHAR(50) NOT NULL,  anzLogin INTEGER UNSIGNED NOT NULL DEFAULT 0,  anzFehlLogin INTEGER UNSIGNED NOT NULL DEFAULT 0,  lastLogin DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',  Birthday DATE NOT NULL DEFAULT '0000-00-00',  FilmPrivileg INTEGER(2) UNSIGNED NOT NULL DEFAULT 1,  FormatPrivileg INTEGER(2) UNSIGNED NOT NULL DEFAULT 1,  GenrePrivileg INTEGER(2) UNSIGNED NOT NULL DEFAULT 1,  CollectPrivileg INTEGER(2) UNSIGNED NOT NULL DEFAULT 1,  getEmail INTEGER(1) UNSIGNED NOT NULL DEFAULT 0,  checkChangePWD VARCHAR(40) NULL,  Style VARCHAR(50) NULL,  showAnzFilme INTEGER UNSIGNED NOT NULL DEFAULT 40,  showSmallCovers INTEGER(2) UNSIGNED NOT NULL DEFAULT 1,  PRIMARY KEY(UserID) )
und fang nochmal von vorne an!
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Gast

Beitrag von Gast »

danke für das skript

das "Field '......' doesn't have a default value"-problem ist beseitigt

jetzt kommt nur noch:
UPDATE filme_SETTINGS Wert="0" WHERE Variable="anzTopFilme"

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 '="0" WHERE Variable="anzTopFilme"' at line 1

UPDATE filme_SETTINGS Wert="0" WHERE Variable="anzNeueFilme"

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 '="0" WHERE Variable="anzNeueFilme"' at line 1

UPDATE filme_SETTINGS Wert="0" WHERE Variable="anzBestFilme"

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 '="0" WHERE Variable="anzBestFilme"' at line 1
ich schätze mal das ist ein fehler im install script der install.php weil das sql script erscheint sogar mir nun einleuchtend-funktionierend

(...10 minuten später...)

in der install.php ist mir beim ersten durchscrollen sofort (obwohl ich php-newb bin :( ) das ins auge gefallen:
if ( !$gdlib )
{
$myVar->warnung[] = "Deiner PHP-Installation fehlt gdlib zum Erstellen von Thumbnails. Deshalb wird in den Settings die Startseite ausgeblendet.";

$sql = "UPDATE $myDB->SETTINGS Wert=\"0\" WHERE Variable=\"anzTopFilme\"";
$rs = $myDB->go($sql);
$sql = "UPDATE $myDB->SETTINGS Wert=\"0\" WHERE Variable=\"anzNeueFilme\"";
$rs = $myDB->go($sql);
$sql = "UPDATE $myDB->SETTINGS Wert=\"0\" WHERE Variable=\"anzBestFilme\"";
$rs = $myDB->go($sql);
}
da sind genau die drei einträge die probleme machen
und da ich gdlib aus faulheit noch nicht aktiviert habe...
("das kann ich auch danach immer noch machen" :roll: )
naja gd2 aktiviert und siehe da es scheint zu funktionieren...
ich teste es nochmal ausgiebig
Gast

Beitrag von Gast »

jetzt bin ich wieder beim alten fehler
INSERT INTO filme_FILME (inserted, USERS_UserID) VALUES ( now(), 1 )

Field 'COLLECT_CollectID' doesn't have a default value

INSERT INTO filme_DISCS (DiscID,FILME_FilmID) VALUES (1,0)

Field 'USERS_UserID' doesn't have a default value
ich versuchs trotzdem mal weiter
Jonesy

Beitrag von Jonesy »

nachdem ich die halbe datenbank durch bin und bei nahezu jedem eintrag den default wert "NULL" hinzugefügt habe...

ich rate dir das beim install script zu berücksichtigen nicht dass noch mehr leute mit dem problem aufkreuzen

ich weis die änderungen jetzt nichtmehr auswendig aber ich geb dir mal eine übersicht:

filme_filme

COLLECT_CollectID NULL
myFilmID NULL
Titel NULL
Originaltitel NULL
Jahr 0
Land varchar(255) NULL
Laufzeit 0
FSK 0
FSKunbekannt NULL
Inhalt NULL
Bemerkung NULL
inserted 0000-00-00 00:00:00
istTopfilm 0
Webseite NULL
brauchtPrivileg 1
USERS_UserID NULL
FORMATE_FormatID NULL
und in
filme_discs
USERS_UserID NULL
(...wieder 10 minuten später...)

einige sachen funktionieren immer noch nicht wie zB einen benutzer hinzufügen

dass es funktioniert musste ich ändern:

filme_users
Style NULL
und ES MUSS ein geburtsdatum eingetragen sein ansonsten kommt folgende fehlermeldung:
Incorrect date value: '' for column 'Birthday' at row 1
(der default wert dafür ist 0000-00-00 )
Benutzeravatar
der-domi
Site Admin
Beiträge: 673
Registriert: Di 4. Apr 2006, 19:22
Kontaktdaten:

Beitrag von der-domi »

Ich habe erwähnt, dass ich nicht weiß, woher die Fehler der SETTINGS-Tabelle kommen. Wo ich die Zeilen im PHP-Skript finde weiß ich sehr wohl! Da ist definiv kein Fehler drin und mit gdlib hat das nichts zu tun, da hier ein MySQL-Problem vorliegt!
Jonesy hat geschrieben:nachdem ich die halbe datenbank durch bin und bei nahezu jedem eintrag den default wert "NULL" hinzugefügt habe...
Tja, das solltest du aber gar nicht. Warum fügst du denn als Defaultwert NULL ein? Damit wird das Skript auch nicht fehlerfrei laufen!
Jonesy hat geschrieben:ich rate dir das beim install script zu berücksichtigen nicht dass noch mehr leute mit dem problem aufkreuzen
Hallo? Was erwartest du? Ich kümmere mich erst einmal um die wichtigen Dinge im Leben! Und hör auf mir zu erzählen, wieviele Minuten du nach einem Fheler gesucht hast, sonst erzähl ich dir mal, wieviele 100te Stunden ich programmiert habe, damit man das Skript benutzen kann!
Jonesy hat geschrieben:und ES MUSS ein geburtsdatum eingetragen sein ansonsten kommt folgende fehlermeldung:
Incorrect date value: '' for column 'Birthday' at row 1
(der default wert dafür ist 0000-00-00 )
Dann schau mal bitte, was oben im SQL-Befehl steht, welchen ich gepostet habe. Ich habe keine Ahnung, was du falsch gemacht hast!

Im Übrigen wird deine Datenbank wahrscheinlich nur in einem anderen Modus laufen! Siehe MySQL 5.0 Reference Manual und verrate mal in welchem Modus es läuft!

Schön, dass ich auch dir helfen konnte! Gern geschehen!
Nicht verzagen, Domi fragen

Viele Grüße
Dominik
Gast

Beitrag von Gast »

hallo? bitte komm ma runter?
ich weis gar nicht waurm du dich angegriffen fühlst

die " 10 minuten später "-zeilen hab ich nur eingefügt dass man einen überblick über die struktur und meinen arbeitstatus bekommt
Tja, das solltest du aber gar nicht. Warum fügst du denn als Defaultwert NULL ein? Damit wird das Skript auch nicht fehlerfrei laufen!
du hast ja gesagt ich soll selbst ein wenig mitarbeiten...und da ich von MySQL nun nicht soviel weis wie du muss ich mir aushelfen
Hallo? Was erwartest du? Ich kümmere mich erst einmal um die wichtigen Dinge im Leben! Und hör auf mir zu erzählen, wieviele Minuten du nach einem Fheler gesucht hast, sonst erzähl ich dir mal, wieviele 100te Stunden ich programmiert habe, damit man das Skript benutzen kann!
ich habe dich doch nur freundlich darauf hingewiesen das skript irgendwann mal zu ändern :(

trotzdem wehre ich mich behemmend dass nur ich diesen fehler verursacht hätte
STRICT_TRANS_TABLES (Implemented in MySQL 5.0.2) / NO_AUTO_CREATE_USER / NO_ENGINE_SUBSTITUTION
da dieser strict mode bei neuen MySQL versionen wohl standard ist wird jeder der eine höhere version als 5.0.2 hat, diesen Fehler mit dem standard skript von der FilmDB erhalten
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast