webentwicklung-frage-antwort-db.com.de

Fehler? # 1146 - Tabelle 'xxx.xxxxx' ist nicht vorhanden

Ich benutze Windows XP. Ich erstelle eine Tabelle in phpMyAdmin mit der integrierten Funktion zum Erstellen von Tabellen Mein Datenbankname ist ddd.

Es generiert den folgenden Code:

CREATE TABLE  `ddd`.`mwrevision` (

`asd` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`sddd` INT NOT NULL
) ENGINE = INNODB;

und der folgende Fehler wird angezeigt:

MySQL said:     
#1146 - Table 'ddd.mwrevision' doesn't exist 

Was könnte das Problem sein?

30
Shaheer

Ich hatte auch das gleiche Problem in der Vergangenheit. Nach dem Verschieben der Datenbankdateien an einen neuen Speicherort und nach dem Aktualisieren des MySQL-Servers war alles passiert. Alle Tabellen mit InnoDB-Engine sind aus meiner Datenbank verschwunden. Ich habe versucht, sie neu zu erstellen, aber mysql hat mir die ganze Zeit 1146: Table 'xxx' doesn't exist gesagt, bis ich meine Datenbank neu erstellt und den mysql-Dienst neu gestartet hatte.

Ich denke, es ist notwendig, etwas über InnoDB Table Binaries zu erfahren.

27
sempasha

Ich hatte das gleiche Problem und kann über das Internet keinen guten Tipp dafür bekommen, also habe ich dies für Sie und für alle, die es brauchen, geteilt.

In meiner Situation kopiere ich eine Datenbank (alle Dateien: frm, myd) in den Datenordner im MySQL-Datenordner (mit Wamp zu Hause). Alles war in Ordnung, bis ich eine Tabelle erstellen möchte und den Fehler #1146 Table '...' doesn't exist! habe.

Ich verwende Wamp 2.1 mit MySQL Version 5.5.16.

Meine Lösung:

  1. Exportieren Sie die Datenbank in eine Datei.

  2. Überprüfen Sie, ob die exportierte Datei wirklich in Ordnung ist !!

  3. lösche die Datenbank, wo ich Probleme habe;

  4. erstellen Sie eine neue Datenbank mit demselben Namen wie die letzte.

  5. importieren Sie die Datei in die Datenbank.

FÜR MICH IS PROBLEM BEHEBT. Jetzt kann ich wieder fehlerfrei Tabellen erstellen.

11
carlos

In meinem Fall habe ich diesen Befehl ausgeführt, auch wenn die Tabelle in PhpMyAdmin nicht sichtbar war: 

DROP TABLE mytable

dann

CREATE TABLE....

Arbeitete für mich!

4
Jim 007

Der Neustart von MySQL funktioniert für mich gut. 

4
Muhammad Usman

Überprüfen Sie die Dateinamen .
Möglicherweise müssen Sie eine neue Datenbank erstellen in phpmyadmin, die der Datenbank entspricht, die Sie importieren möchten.

3
blarg

Ich hatte das gleiche Problem. Ich habe versucht, eine Tabelle in Mysql zu erstellen und bekam den gleichen Fehler. Ich habe den MySQL-Server neu gestartet und den Befehl ausgeführt und konnte nach dem Restore eine Tabelle erstellen/migrieren.

3
thekosmix

Ich bin heute auf das gleiche Problem gestoßen. Ich habe versucht, eine users-Tabelle zu erstellen, und wurde aufgefordert, ERROR 1146 (42S02): Table users doesn't exist zu machen, was keinen Sinn machte, weil ich nur versuchte, die Tabelle zu erstellen !!

Ich habe dann versucht, die Tabelle durch Eingabe von DROP TABLE users zu löschen, da ich wusste, dass sie fehlschlagen würde, weil sie nicht vorhanden war, und ich bekam einen Fehler, der Unknown table users sagte. Nachdem ich diesen Fehler erhalten hatte, versuchte ich, die Tabelle erneut zu erstellen, und die Tabelle wurde auf magische Weise erstellt!

Meine Intuition ist, dass ich diese Tabelle wahrscheinlich schon einmal erstellt habe und sie irgendwie nicht vollständig gelöscht wurde. Indem ich ausdrücklich DROP TABLE sagte, konnte ich den internen Zustand irgendwie zurücksetzen? Aber das ist nur meine Vermutung.

Versuchen Sie kurz DROP, welche Tabelle Sie gerade erstellen, und erstellen Sie sie erneut.

1
Xin

Wie in pprakash oben erwähnt, hat das Kopieren der table.frm-Dateien UND der ibdata1 -Datei für mich funktioniert. (Ich hätte diesen Kommentar gerade kommentiert, aber diese SO - Anforderung für 50 Punkte bedeutet, dass ich eine Lösung anbieten muss, selbst wenn es sich nur um eine Auffüllung einer vorhandenen handelt ... komisch.)

Zusamenfassend:

  1. Schließen Sie Ihren DB Explorer-Client mit hervorgehobenem Text (z. B. Workbench).
  2. Stoppen Sie den MySQL-Dienst (Windows-Host).
  3. Machen Sie eine sichere Kopie von praktisch allem!
  4. Speichern Sie eine Kopie der Tabellendatei (z. B. mytable.frm) im Schemadatenordner (z. B. MySQL Server/data/{yourschema}).
  5. Speichern Sie eine Kopie der Datei ibdata1 im Datenordner (dh MySQL Server/data).
  6. Starten Sie den MySQL-Dienst neu.
  7. Überprüfen Sie, ob die Tabellen jetzt in Ihrem DB Explorer-Client abrufbar und abrufbar sind.

Danach war alles gut. (Vergessen Sie nicht, zu sichern, wenn Sie Erfolg haben!)

1
SteveCinq

Heute stand ich vor demselben Problem. Ich befand mich in einer sehr schwierigen Situation, aber was für eine ID habe ich erstellt, mit einer anderen Bezeichnung, z. B. (Modulmaster hat nicht erstellt, dann erstelle ich Modulemaster1), und nachdem ich eine Tabelle erstellt habe, mache ich einfach die Umbenennungstabelle.

1
Vipin Gurjar

Ich hatte dieses Problem, weil ein Auslöser nicht funktioniert.

0
DauleDK

Spaltennamen müssen in der Tabelle eindeutig sein. Sie können nicht zwei Spalten mit dem Namen asd in derselben Tabelle haben.

0
Oswald

Ich hatte vor kurzem dasselbe Problem, aber auf Linux Server. Die Datenbank war abgestürzt und ich habe sie aus dem Backup wiederhergestellt, basierend auf dem einfachen Kopieren von /var/lib/mysql/* (analogem mysql DATA-Ordner in wamp). Nach der Wiederherstellung musste ich eine neue Tabelle erstellen und erhielt den MySQL-Fehler # 1146. Ich habe versucht, Mysql neu zu starten, und es sagte, dass es nicht starten konnte. Ich überprüfte die Mysql-Protokolle und stellte fest, dass Mysql einfach keine Zugriffsrechte auf seine DB-Dateien hatte. Ich habe die Besitzerinformationen von/var/lib/mysql/* überprüft und 'myuser:myuser' erhalten (mein Benutzer ist ich). Aber es sollte 'mysql:adm' sein (so ist der eigene Entwickler-Rechner), also habe ich den Besitzer in 'mysql: adm' geändert. Und danach startete mysql normal und ich konnte Tabellen erstellen oder andere Operationen ausführen.

Überprüfen Sie also nach dem Verschieben von Datenbankdateien oder dem Wiederherstellen aus Sicherungen die Zugriffsrechte auf mysql.

Hoffe das hilft...

0
vlad

ausführen von CMD &% path% = auf mysql/bin gesetzt

mysql_upgrade -u user -ppassword

0
Ravi Parekh

Für mich war es ein Tabellenname, Groß-/Kleinschreibung. Ich musste sicherstellen, dass der Name der Tabelle in einer Löschabfrage übereinstimmt. Die Tabelle notifications war nicht dieselbe wie Notifications. Ich habe das Problem behoben, indem der Tabellenname mit der Abfrage und den Angaben von MySQLWorkbench verglichen wurde.

Seltsam ist, dass dieser Fehler in einer funktionierenden SQL-Anweisung auftauchte. Ich weiß nicht, was diesen Fall verursacht hat. Möglicherweise ein automatisches AWS-RDS-Update.

0
Kahitarich

Ich hatte das gleiche Problem. Es ist nach einem Windows-Startfehler aufgetreten. Es scheint, dass einige Dateien dadurch beschädigt wurden. Ich habe die Datenbank erneut aus dem gespeicherten Skript importiert und es funktioniert einwandfrei.

0
Ayman Al-Absi

Ich habe dieses Problem nach dem Kopieren der mytable.idb-Tabellendatei von einem anderen Speicherort erhalten. Um dieses Problem zu beheben, habe ich Folgendes getan:

ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;

Kopieren Sie mytable.idb

ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;

Starten Sie MySql neu

0
l0pan

Der Grund für mich war, weil ich zwei "models.py" -Dateien hatte, die etwas unterschiedliche Felder enthielten. Ich habe es gelöst durch:

  1. löschen einer der models.py-Dateien 
  2. korrigieren von Verweisen auf die gelöschte Datei 
  3. führen Sie dann manage.py syncdb aus
0
Amey

In meinem Fall der Parameter von MySQL; lower_case_table_names wurde = 0 konfiguriert.

Dies führt dazu, dass Abfragen im Zusammenhang mit der Verwendung von Großbuchstaben nicht funktionieren.

0
hiropon