es werden nicht alle Datensätze gelesen...
Nick
- datenbank
Hallo,
ich habe da mal ein Problem - und hoffe ihr könnt mir helfen.
Als Datenbank habe ich MySql 5.0
Ich habe 3 Tabellen (die hier relevant sind)
einmal Tabelle video
id
dateiname
info
tabelle video_person
id
video_id
person_id
tabelle video_produkt
id
video_id
produkt_id
also ganz banal aufgebaut...
jetzt ist mir aufgefallen, dass seid neuestem nicht mehr alle videos richtig ausgelesen werden. Zum Testen habe ich eine einfache Abfrage ala "select id from video" gemacht. Wenn ich die via PHP echo ausgebe werden nicht alle ids ausgegeben
das gleiche wenn ich die anderen beiden tabellen abfrage (es werden immer bis zur gleichen Video ID die Datensätze ausgegeben)
allerdings wenn ich sage zeige mir Video von Person/produkt x an wird der Datensatz angezeigt (auch höhere Datensätze) allerdings nur wenn max. 1 Datensatz zu einer Person/Produkt zugeordnet sind, sind es 2 oder mehr videos kommen wieder nur die Datensätze die unter der ominösen "abbruch" id liegen.
Das ganze ist mir ein absolutes Rätsel. Die IDs werden via auto-increment beim Eintragen vergeben. Zwischen der "abbruch ID" und der nächsten ID ist eine größere Lücke (da hat anscheinend jemand mehrfach versucht Datensätze einzugeben und diese wieder gelöscht - aber die Zuordnungen in die anderen beiden Tabellen sind auch entsprechend gelöscht also liegt es nicht daran, dass da noch irgendwo ein Datensatz rumschwirrt der nicht zugeordnet werden kann)
Falls eine eurer Glaskugeln ausspuckt woran sowas liegen kann, wäre ich über eine kurze Info dankbar - weiß nicht mehr weiter
Grüße,
Nick
Hello,
Als Datenbank habe ich MySql 5.0
einmal Tabelle video
id
dateiname
info
jetzt ist mir aufgefallen, dass seid neuestem nicht mehr alle videos richtig ausgelesen werden. Zum Testen habe ich eine einfache Abfrage ala "select id from video" gemacht. Wenn ich die via PHP echo ausgebe werden nicht alle ids ausgegeben
Zwei Fragen dazu:
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Zwei Fragen dazu:
- Woher weißt Du, dass es nicht die IDs aller vorhandenen Datensätze sind?
- Wie sieht der Code für die Ausgabe des Resultsets aus?
ich schreibe:
while ABFRAGE
{
echo ID
}
Die Ausgabe vergleiche ich mit phpMyadmin und bekomme unterschiedliche Resultate.
Grüße
Hello,
Zwei Fragen dazu:
- Woher weißt Du, dass es nicht die IDs aller vorhandenen Datensätze sind?
- Wie sieht der Code für die Ausgabe des Resultsets aus?
ich schreibe:
while ABFRAGE
{
echo ID
}
Echt merkwürdiges Konstrukt. Wieso nimmst Du eine Konstante für die Bedinungung der While-Schleife? Außerdem fehlen da doch auch die Klammern um die Bedingung. Und dann ergibt das entweder keine Ausgabe, oder eine Endlosschleife, die immer dieselbe Konstante ID ausgibt, falls vorhanden.
Die Ausgabe vergleiche ich mit phpMyadmin und bekomme unterschiedliche Resultate.
Das ist kein Wunder!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Vinzenz, hallo Tom,
nein daran sollte es eigentlich nicht liegen. Wollte das ganze nur verkürzt darstellen. Tatsächlicher Code bei der Test-Abfrage ist
$select_video = "select vid_id from t_video";
$result = mysql_query($select_video);
while($row = mysql_fetch_array($result)) {
echo $row["vid_id"] ."<br>";
}
In der eigentlichen Anwendung ist der ganze Code natürlich deutlich umfangreicher und da kann durchaus auch ein PHP Fehler oder nicht beachteter Kontextwechsel etc. etc. vorliegen, daher habe ich auch diesen ganz einfachen Code gewählt um zu testen ob es daran liegt.
Grüße,
Nick
Hi,
$select_video = "select vid_id from t_video";
Das statement paßt nicht zu den im Anfangsposting vorgestellten Tabellen (weder Tabellen- noch Spaltenname ...).
Darf man aus Deinen ständigen Falsch-Angaben (siehe auch den angebl. Code für die Ausgabe) und daraus, daß auch wichtige Informationen (z.B. Spaltentypen) komplett fehlen, schließen, daß Du nicht wirklich an einer Problemlösung interessiert bist?
cu,
Andreas
Hallo,
$select_video = "select vid_id from t_video";
$result = mysql_query($select_video);
while($row = mysql_fetch_array($result)) {
echo $row["vid_id"] ."<br>";
}
und die exakt gleiche Abfrage in phpMyAdmin liefert mehr Datensätze?
Ich bin erstaunt.
Was sagt die MySQL-Workbench oder die Kommandozeile?
Freundliche Grüße
Vinzenz
Was sagt die MySQL-Workbench oder die Kommandozeile?
Nur kurz, damit nicht der Eindruck entsteht ich interessiere mich nicht mehr für das Thema oder bin für die Hinweise und Hilfestellungen nicht dankbar. Kann erst morgen wieder an dem Problem arbeiten und melde mich dann noch mal.
Grüße,
Nick
und die exakt gleiche Abfrage in phpMyAdmin liefert mehr Datensätze?
Ich bin erstaunt.
Habe das ganze nochmals überprüft: die exakt gleiche Abfrage in phpMyAdmin liefert ein anderes Ergebnis (mehr Datensätze). Es gibt keinerlei Fehler- oder sonstige meldungen. Habe die Tabellen neu aufgesetzt und die Daten neu eingespielt und alles läuft wieder so wie es soll, wie es vorher war.
Woran das liegen kann ist mir ein absolutes Rätsel und wirklich nicht nachvollziehbar....
Grüße,
Nick
Hallo,
Die Ausgabe vergleiche ich mit phpMyadmin und bekomme unterschiedliche Resultate.
dann hast Du vermutlich ein PHP-Problem und kein Datenbankproblem. Es könnte aber auch sein, dass Du den Kontextwechsel nicht richtig beachtest.
Freundliche Grüße
Vinzenz
Hello,
Die Ausgabe vergleiche ich mit phpMyadmin und bekomme unterschiedliche Resultate.
dann hast Du vermutlich ein PHP-Problem und kein Datenbankproblem. Es könnte aber auch sein, dass Du den Kontextwechsel nicht richtig beachtest.
Es könnte aber auch sein, dass er seinen Index zerstört hat. Bei MySQL 5.0 ist mir das auch ein paarmal passiert, wenn ich unerlaubte/unsinnige Statements abgesetzt habe.
Aber besonders kooperativ ist "Nick" ja sowieso nicht bei der Lösung seines Problems.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Es könnte aber auch sein, dass er seinen Index zerstört hat. Bei MySQL 5.0 ist mir das auch ein paarmal passiert, wenn ich unerlaubte/unsinnige Statements abgesetzt habe.
Index zerstört?! Wie kann man so was schaffen? Wenn ich neue Datensätze eingebe, werden die IDs normal weiter hochgezählt - kann das trotzdem daran liegen? Können gleichzeitig 3 Tabellen davon betroffen sein? Hätte das Auswirkungen auf die restliche Datenbank (die nicht direkt auf diese Tabellen zugreift / mit diesen Tabellen verknüpft ist)?
Meinst Du ich sollte diese drei Tabellen löschen und neu aufsetzen? (Es sind erst um die 30 Datensätze plus eben die Verknüpfungen eingegeben wäre also nicht ganz so dramatisch.
Grüße,
Nick
Hello,
Index zerstört?! Wie kann man so was schaffen?
Das weiß ich auch nicht. Ich habe es nur schon geschafft.
Das eine Mal hatte ich auch solche Hänger, wie Du sie beschreibst, das andere Mal hatte ich einen zirkulrären Verlauf, der dann zur Endlosausgabe führte...
Es helfen dann meistens die Maintenance Statements
http://dev.mysql.com/doc/refman/5.0/en/table-maintenance-sql.html
Ich würde die vermeintlich kaputten Tabellen jetzt keinesfalls löschen, sondern die Chance nutzen, um für daran für den Ernstfall zu üben.
Dass der phpMyAdmin trotzdem eine andere Ausgabe macht, kann an einem geringfügig anders aufgebauten Statement liegen. Welches benutzt Du denn im phpMyAdmin?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg