Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eintrag mit . aus SQL-Datenbank löschen



Iggi
13-02-2003, 20:51
Hallo,

ich habe folgendes Problem: In einer MySQL-Datenbank habe ich einen Datensatz angelegt, gefüllt und danach den Namen geändert. Dabei habe ich allerdings einen Punkt in den Namen mit aufgenommen. myPHPAdmin hat diesen seltsamerweise sogar geschluckt.
Da ein Punkt im Namen ja nicht erlaubt ist, kann ich jetzt allerdings auf nichts mehr zugreifen - und den Datensatz auch nicht mehr löschen.

Folgende (sinnvolle) Befehle habe ich schon probiert:
DROP TABLE `fotos_Ministrantenausflug nach Bodenmais am 14.9`;
Resultat:
Incorrect table name 'fotos_Ministrantenausflug nach Bodenmais am 14.9'

DROP TABLE `fotos_Ministrantenausflug nach Bodenmais am 14`.`9`;
Resultat:
Access denied for user: 'web194@localhost' to database 'fotos_Ministrantenausflug nach Bodenmais am 14'

Gibt es nicht doch irgendeine Möglichkeit, den Datensatz wieder zu löschen (im Idealfall natürlich umzubenennen), ohne gleich die ganze Datenbank mit zu vernichten?

Für Hilfe wäre ich dankbar!

Gaert
13-02-2003, 22:00
Auweia...
Ich kann es leider nicht reproduzieren, da bei mir kein SQL Tool eine Tabelle mit "." drin schluckt (genausowenig wie die mysql Konsole). Es ist mir also irgendwie total unverständlich, wie du das fertiggebracht hast (mal abgesehen davon, dass so ein Tabellenname eh viel zu lang ist...)!
Meine Einschätzung ist, dass du nicht um ein Drop Database rumkommen wirst... am besten mal von allen Tabellen ein Dump ziehen.
Überstürze aber mal nichts, vielleicht hat hier ja sonst noch einer ne Idee.

Iggi
13-02-2003, 22:27
Wie ich das geschafft habe, bleibt mir auch irgendwie ein Rätsel... Vor allem habe ich es danach auch nicht mehr geschafft, einen derartigen Eintrag anzulegen...
Warum ich eine so langen Eintrag verwende hat übrigens folgenden Grund: Das ganze soll eine Gallerie werden, und der Name der Gallerie soll aus dem Namen der Datenbank ermittelt werden. Die Abfrage geht automatisch, es werden alle Einträge genommen, die mit fotos_ anfangen. Von daher sollte die Länge vom Namen in Ordnung gehen :)
Erlaubt scheinen übrigens 71 Zeichen zu sein, auch wenn ich auf den MySQL-Seiten noch keine Bestätigung dafür gefunden habe.

Für Ideen, den Eintrag wieder loszuwerden, bin ich weiterhin dankbar!

elrond
14-02-2003, 11:05
versuch den Punkt mal mit einem backslash zu quoten.. vielleicht hilfts.

theoretisch sollte auch nichts passieren, wenn du die files, die zur tabelle gehören einfach im filesystem löscht. --möglicht wenn du mysql vorher gestoppd hast--

ps: es gibt mit sicherheit keinen grund für solche Tabellennamen, wenn doch, solltest du noch mal über dein datenmodell nachdenken.

Christoph
14-02-2003, 13:38
Sonderzeichen (z.B. Spaces) in Bezeichnern sind in SQL2 durch
Double Quotes möglich, wobei allerdings die Bezeichner auch
Casesensitiv werden. Im Gegensatz dazu begrenzen Single Quotes
Attributwerte.

Folgendes wäre also möglich:

SELECT "Feld" FROM "Tab elle" WHERE "Feld"=2;

Und folgendes wäre ungültiges SQL (durch die
double quotes wird "huhu" zum Feldnamen, statt Feldinhalt):

SELECT feld FROM tabelle WHERE feld="huhu";

(Nachzulesen in Date/Darwen: "SQL - Der Standard")

Versuchs also mal mit double quotes.

Aber Achtung: soweit ich weiss haben die MySQL-Entwickler
die Sache mit den Quotes völlig verzappelt in ihrer Implemntierung
(Ist eben kein SQL sondern "My"-SQL).

Iggi
14-02-2003, 15:20
Hallo,

vielen Dank für Eure Hilfe. Leider hat es nichts gebracht, den Punkt zu quoten, und doppelte Anführungszeichen scheinen zumindest in MySQL nicht erlaubt zu sein, sondern lediglich ` - mit denen funktioniert es aber eben nicht.

Ich rufe allerdings morgen einmal bei meinem Anbieter an und bitte ihn, die entsprechende Datei zu löschen. Vielleicht hilft das ja etwas. Ich werde das Ergebnis dan auf jeden Fall berichten.