In phpMyAdmin habe ich in meiner MySQL-Tabelle lediglich ein Feld von projekt_ordner in projekt_verzeichnis umbenannt. Eigentlich nichts ungewöhnliches und bisher machte so was keine Probleme. Nun erhalte ich bei der SQL-Abfrage in PHP folgende Fehlermeldung: Uncaught mysqli_sql_exception: Unknown column 'projekt_ordner' in 'field list' Ändere ich das Feld wieder in den ursprünglichen Namen, funktioniert es wieder. Natürlich habe ich schon gegoogelt, aber aus den Ergebnissen werde ich nicht schlau. Gibt es irgendwo einen Cache den man löschen kann? Die Tabellenwartungsoptionen in phpMyAdmin unter Operationen → Hilfsmittel brachten jedenfalls keinen Erfolg. An meiner Abfrage denke ich liegt es nicht. Die ändert sich dadurch ja nicht. $db_projekt = mysqli_fetch_array(mysqli_query($mysql_cms,"SELECT * FROM projekte WHERE id = $global_projekt_id")); Kürzlich habe ich aber ein Update durchgeführt. Installiert ist jetzt: PhpMyAdmin 5.2.1deb3 MySQL 8.0.42-0ubuntu0.24.04.2 PHP 8.3.6
Also irgend eine Instanz findet den alten Tabellenname nicht mehr, hat also die Umbenennung nicht mitbekommen. Das gilt es zu finden. Gibt es weitere Tabellen, evtl. "Views"? Oder ein Index, ein Trigger oder sowas in der Art, "foreign key"-Definitionen in einer anderen Tabelle, Cascading ... Wie hast du die Tabelle umbenannt? Ganz offiziell mit "rename table ..."? Hinweis allgemein: "select * ..." macht man wenn man interaktiv, z.B. in PHPMyadmin mal was nachsehen möchte. Wenn man das Ergebnis in einer Programmiersprache weiter verwenden will, sollte man besser die Feldnamen in einer Liste mit Komma hinschreiben. Erstens weiss man dann genau, in welcher Reihenfolge die Daten kommen und bei Aggregationen wie Sum() oder Count() erhält man überhaupt erst einen verwertbaren Namen für den Zugriff, dann sollte man "as..." (Alias) verwenden. Ausserdem vereinfacht es das Debugging.
:
Bearbeitet durch User
Was sagt denn das Error Log deines Webservers... Der sagt dir ja genau wo und in welcher Zeile und mit welchem Syntax der Fehler ausgeworfen wird.
Frank E. schrieb: > Also irgend eine Instanz findet den alten Tabellenname nicht mehr, hat > also die Umbenennung nicht mitbekommen. Das gilt es zu finden. Das ist nur komisch, denn ich habe den Feldnamen oder korrekter gesagt den Namen der Spalte jetzt testweise über die Linux-Konsole statt in phpMyAdmin umbenannt. ALTER TABLE `projekte` CHANGE `projekt_ordner` `projekt_verzeichnis` VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL; In phpMyAdmin sieht man dann auch anschließend die Änderung. Trotzdem besteht der Fehler. Auch löschen der Spalte und neu anlegen bringt nichts. > Gibt es weitere Tabellen, evtl. "Views"? Oder ein Index, ein Trigger > oder sowas in der Art, "foreign key"-Definitionen in einer anderen > Tabelle, Cascading ... Nichts dergleichen. Ein Index habe ich bisher nur über id angelegt und dies testweise gelöscht und neu angelegt. > Wie hast du die Tabelle umbenannt? Ganz offiziell mit "rename table > ..."? Die Spalte, nicht die Tabelle. Aber siehe oben. Rene K. schrieb: > Was sagt denn das Error Log deines Webservers... Der sagt dir ja genau > wo und in welcher Zeile und mit welchem Syntax der Fehler ausgeworfen > wird. Da steht leider genau das gleiche drin, was mir auch PHP ausspuckt. Was ich sonst noch gefunden habe, dass bei der /etc/phpmyadmin/config-db.php der Nutzer nicht stimmte. (Im Apache habe ich einen anderen Nutzer anstelle von www-data eingetragen). Nach der Korrektur wird das in der error.log nicht mehr bemängelt, dafür werden mir dann beim Login in phpMyAdmin zwei Server zur Auswahl angezeigt, einmal localhost:3306 und einmal localhost(root) und der automatische Login funktioniert nicht mehr. Den Zusammenhang verstehe ich nicht, aber es ändert sich auch nichts an meinem Problem, egal welchen Server ich beim Login auswähle. Auf meinem alten Rechner mit etwas älteren Versionen von mySQL und phpMyAdmin läuft alles normal. Den habe ich ansonsten genauso konfiguriert.
:
Bearbeitet durch User
Ich kapiere es überhaupt nicht. Jetzt habe ich die Tabelle komplett gelöscht und eine neue angelegt. Statt * die Spalten einzeln bei der Abfrage angegeben. Beides erfolglos. So kann man den Sonntag Abend verbraten...
Tim 🔆 schrieb: > Jetzt habe ich die Tabelle komplett gelöscht und eine neue angelegt. > > Statt * die Spalten einzeln bei der Abfrage angegeben. Hmm, dann mach doch jetzt probeweise mal "SELECT projekt_verzeichnis AS projekt_ordner, ... FROM ...", ob es dann plötzlich wieder geht und falls ja, such in deinem Code, wo der String "projekt_ordner" erwähnt wird. Ich meide PHP/MySQL wie die Pest, darum bin ich nicht auf dem Laufenden: - Ist irgendein Framework im Einsatz, das dir Arbeit abnehmen soll und im Gegenzug erwartet, dass die Spalten genauso heißen wie die Variablen in PHP? - Lässt sich der Exception nicht ein Stack-Trace entlocken, der dir sagt, exakt in welcher Codezeile der Fehler auftritt?
:
Bearbeitet durch User
Tim 🔆 schrieb: > In phpMyAdmin habe ich in meiner MySQL-Tabelle lediglich ein Feld von > projekt_ordner in projekt_verzeichnis umbenannt. Eigentlich nichts > ungewöhnliches und bisher machte so was keine Probleme. > > Nun erhalte ich bei der SQL-Abfrage in PHP folgende Fehlermeldung: > Uncaught mysqli_sql_exception: Unknown column 'projekt_ordner' in 'field > list' 1. Ins Wurzelverzeichnis des Projekts gehen, dort
1 | grep -ri projekt_verzeichnis . |
aufrufen und schauen, wo der alte Spaltenname benutzt wird. Vermutlich wird der alte Spaltenname noch weiterhin beim Zugriff auf die Ergebnisse Deines Statement ("$row['projekt_ordner']") benutzt. 2. Fehlermeldungen anschauen, da sollten der Name des Skripts und die Zeile aufgeführt werden, wo der Fehler auftritt. Dort nachschauen. :-)
Ein T. schrieb: > aufrufen und schauen, wo der alte Spaltenname benutzt wird. Vermutlich > wird der alte Spaltenname noch weiterhin beim Zugriff auf die Ergebnisse > Deines Statement ("$row['projekt_ordner']") benutzt. +1 oder einfach mal ein var_dump($db_projekt); ausgeben lassen > 2. Fehlermeldungen anschauen, da sollten der Name des Skripts und die > Zeile aufgeführt werden, wo der Fehler auftritt. Dort nachschauen. :-) +1
Leute, da habe ich echt den Bock abgeschossen. Ich schäme mich den Thread eröffnet zu haben. Eben wunderte ich mich, dass die PHP-Datei die ich gestern geändert hatte, wieder im Ursprungszustand war. Da dämmerte es mir. Ich hatte das Projekt irgendwann auf der Festplatte verschoben, aber im Editor schön weitergearbeitet ohne die Datei neu zu öffnen. Die wurde dann immer schön am alten Ort abgespeichert :-( Ich musste diese jetzt nur noch ins Arbeitsverzeichnis schieben und wie zu erwarten gibt es natürlich keinen Fehler mehr. Tut mir leid, dass ich eure Zeit verschwendet habe.
:
Bearbeitet durch User
Tim 🔆 schrieb: > Tut mir leid, dass ich eure Zeit verschwendet habe. Rechnung kommt. :D Tim 🔆 schrieb: > aber im Editor schön > weitergearbeitet ohne die Datei neu zu öffnen. Welchen Editor benutzt du denn? Notepad++ meckert rum, wenn es die Dateien nicht findet, die noch als geöffnet gelten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.