web-dev-qa-db-fra.com

Punaise? # 1146 - La table 'xxx.xxxxx' n'existe pas

J'utilise Windows XP. Je crée une table dans phpMyAdmin à l'aide de sa fonctionnalité intégrée de création de table, Mon nom de base de données est ddd.

Il génère le code suivant:

CREATE TABLE  `ddd`.`mwrevision` (

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

et l'erreur suivante apparaît:

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

Quel pourrait être le problème?

30
Shaheer

J'ai aussi eu le même problème dans le passé. Tout s'est passé après le déplacement des fichiers de la base de données vers un nouvel emplacement et après la mise à jour du serveur mysql. Toutes les tables avec le moteur InnoDB ont disparu de ma base de données. J'essayais de les recréer, mais mysql m'a dit 1146: Table 'xxx' doesn't exist tout le temps jusqu'à ce que je recrée ma base de données et redémarre le service mysql.

Je pense qu'il est nécessaire de se renseigner sur les fichiers binaires de table InnoDB.

27
sempasha

J'ai eu le même problème et je ne peux pas obtenir un bon pourboire sur le Web, je l'ai donc partagé pour vous et pour tous ceux qui en ont besoin.

Dans ma situation, je copie une base de données (tous les fichiers: frm, myd) dans le dossier de données du dossier de données MySQL (avec Wamp à la maison). Tout allait bien jusqu'à ce que je veuille créer une table et avoir l'erreur #1146 Table '...' doesn't exist!.

J'utilise Wamp 2.1 avec MySQL version 5.5.16.

Ma solution:

  1. Exporter la base de données dans un fichier;

  2. vérifier si le fichier exporté est vraiment OK !!

  3. déposer la base de données où j'ai des problèmes;

  4. créer une nouvelle base de données avec le même nom que le dernier;

  5. importer le fichier dans la base de données.

POUR MOI IS PROBLÈME RÉSOLU. Maintenant, je peux à nouveau créer des tables sans erreurs.

11
carlos

Dans mon cas, j'ai exécuté cette commande même si la table n'était pas visible dans PhpMyAdmin: 

DROP TABLE mytable

puis

CREATE TABLE....

Travaillé pour moi!

4
Jim 007

Redémarrer MySQL fonctionne bien pour moi. 

4
Muhammad Usman

Vérifiez les noms de fichiers .
Vous aurez peut-être besoin de créer une nouvelle base de données dans phpmyadmin qui correspond à la base de données que vous essayez d'importer.

3
blarg

J'ai eu le même problème. J'ai essayé de créer une table dans mysql et j'ai eu la même erreur. J'ai redémarré le serveur mysql, exécuté la commande et créé/migrer la table après la restitution.

3
thekosmix

J'ai rencontré le même problème aujourd'hui. J'essayais de créer une table users et j'ai été invité à indiquer ERROR 1146 (42S02): Table users doesn't exist, ce qui n'avait aucun sens, car j'essayais simplement de créer la table !!

J'ai ensuite essayé de supprimer la table en tapant DROP TABLE users, sachant que cela échouerait car elle n'existait pas, et j'ai reçu une erreur en disant que Unknown table users. Après avoir obtenu cette erreur, j'ai essayé de créer à nouveau la table et, comme par magie, la table a été créée avec succès!

Mon intuition est que j'ai probablement déjà créé cette table et qu'elle n'a pas été complètement effacée. En disant explicitement DROP TABLE j'ai réussi à réinitialiser l'état interne d'une manière ou d'une autre? Mais ce n'est que ma supposition.

En bref, essayez DROP quelle que soit la table que vous créez, puis CREEZ-la à nouveau.

1
Xin

Comme pprakash mentionne ci-dessus, copier les fichiers table.frm AND le fichier ibdata1 a été ce qui a fonctionné pour moi. (J'aurais juste commenté ce commentaire mais cette SO exigence de 50 points signifie que je dois fournir une solution, même s'il ne s'agit que d'un remaniement d'un existant ... bizarre.)

En bref:

  1. Fermez le texte mis en évidence par votre client DB Explorer (par exemple, Workbench).
  2. Arrêtez le service MySQL (hôte Windows).
  3. Faites une copie de sécurité de pratiquement tout!
  4. Enregistrez une copie du (des) fichier (s) de la table (par exemple, mytable.frm ) dans le dossier de données du schéma (par exemple, MySQL Server/data/{yourschema}).
  5. Enregistrez une copie du fichier ibdata1 dans le dossier de données (c’est-à-dire, Serveur MySQL/data).
  6. Redémarrez le service MySQL.
  7. Vérifiez que les tables sont maintenant accessibles, interrogeables, etc. dans votre client DB Explorer.

Après cela, tout allait bien. (N'oubliez pas de sauvegarder si vous avez du succès!)

1
SteveCinq

Aujourd'hui, je faisais face au même problème. J'étais dans une situation très difficile, mais quel identifiant ai-je créé une table avec un nom différent, par exemple (modulemaster ne créait pas, puis-je crée modulemaster1) et après avoir créé table, je ne fais que renommer la table.

1
Vipin Gurjar

J'ai eu ce problème en raison d'un déclencheur ne fonctionnant pas .. Travaillé après avoir supprimé le déclencheur.

0
DauleDK

Les noms de colonne doivent être uniques dans la table. Vous ne pouvez pas avoir deux colonnes nommées asd dans la même table.

0
Oswald

Récemment, j'ai eu le même problème, mais sur un serveur Linux. La base de données a été bloquée et je l’ai récupérée de la sauvegarde, en copiant simplement /var/lib/mysql/* (dossier mysql DATA analogique dans wamp). Après la récupération, j'ai dû créer une nouvelle table et j'ai obtenu l'erreur mysql n ° 1146. J'ai essayé de redémarrer MySQL, et il a dit qu'il ne pouvait pas démarrer. J'ai vérifié les logs de mysql et découvert que mysql n'avait aucun droit d'accès à ses fichiers de base de données. J'ai vérifié les informations sur le propriétaire de/var/lib/mysql/* et obtenu 'myuser:myuser' (myuser, c'est moi). Mais ce devrait être 'mysql:adm' (c'est donc ma propre machine de développeur), alors j'ai changé de propriétaire en 'mysql: adm'. Et après cela, mysql a démarré normalement et je pouvais créer des tables ou effectuer toute autre opération.

Ainsi, après avoir déplacé des fichiers de base de données ou restauré à partir de sauvegardes, vérifiez les droits d'accès pour mysql.

J'espère que cela t'aides...

0
vlad

exécuter à partir de CMD &% path% = défini sur mysql/bin

mysql_upgrade -u user -ppassword

0
Ravi Parekh

Pour moi, c'était un problème de noms de table majuscules/minuscules. Je devais m'assurer que le nom de cas de la table correspondait à une requête de suppression, la table notifications n'était pas la même chose que Notifications. Je l'ai corrigé en faisant correspondre la casse du nom de la table à la requête et à ce que MySQLWorkbench a signalé.

Ce qui est étrange, c'est que cette erreur est apparue dans une instruction SQL travaillée. Je ne sais pas ce qui a causé cette sensibilité à la casse. Peut-être une mise à jour automatique AWS RDS.

0
Kahitarich

J'ai eu le même problème. C’est arrivé après l’erreur de démarrage de Windows, il semble que certains fichiers aient été corrompus à cause de cela. J'ai importé à nouveau la base de données à partir du script enregistré et tout fonctionne correctement.

0
Ayman Al-Absi

J'ai eu ce problème après avoir copié le fichier de table mytable.idb depuis un autre emplacement. Pour résoudre ce problème j'ai fait ce qui suit:

ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;

Copier mytable.idb

ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;

Redémarrer MySql

0
l0pan

La raison pour laquelle je faisais face à cela était parce que j'avais deux fichiers "models.py" contenant des champs légèrement différents. Je l'ai résolu par:

  1. supprimer l'un des fichiers models.py 
  2. corriger les références au fichier supprimé 
  3. puis en exécutant manage.py syncdb
0
Amey

Dans mon cas, le paramètre de MySQL; lower_case_table_names était configuré = 0.

Cela provoque des requêtes liées à l'utilisation des majuscules ne fonctionnera pas.

0
hiropon