MySQL ›Таблица не существует. Но это так (или должно)

Я изменил каталог данных установки MySQL, и все базы переместились правильно, кроме одной. Я могу подключиться и USE базу данных. SHOW TABLES также возвращает мне все таблицы правильно, и файлы каждой таблицы существуют в каталоге данных MySQL.

Однако, когда я пытаюсь SELECT что-то из таблицы, я получаю сообщение об ошибке, что таблица не существует. Тем не менее, это не имеет смысла, поскольку я смог показать ту же таблицу с помощью оператора SHOW TABLES.

Я предполагаю, что SHOW TABLES перечисляет существование файла, но не проверяет, поврежден ли файл или нет. Следовательно, я могу перечислить эти файлы, но не могу получить к ним доступ.

Тем не менее, это всего лишь предположение. Я такого раньше не видел. Теперь я не могу перезапустить базу данных для тестирования, но все остальные приложения, которые ее используют, работают нормально. Но это всего лишь предположение, я такого раньше не видел.

Кто-нибудь знает, почему это происходит?

Пример:

mysql> SHOW TABLES;
+-----------------------+
| Tables_in_database    |
+-----------------------+
| TABLE_ONE             |
| TABLE_TWO             |
| TABLE_THREE           |
+-----------------------+
mysql> SELECT * FROM TABLE_ONE;
ERROR 1146 (42S02): Table 'database.TABLE_ONE' doesn't exist

person johnsmith    schedule 13.10.2011    source источник
comment
вы восстанавливали базу данных из резервной копии? или вы просто скопировали файлы db? у вас есть root-доступ к серверу mysql?   -  person alinoz    schedule 13.10.2011
comment
просто скопировал файлы! да, у меня есть root-доступ ко всему   -  person johnsmith    schedule 13.10.2011
comment
вы можете попробовать: mysql_fix_privilege_tables   -  person alinoz    schedule 13.10.2011
comment
Я буду, но после этого мне придется перезапустить сервер, верно? Просто не могу сейчас это сделать: s   -  person johnsmith    schedule 13.10.2011
comment
это таблицы innodb?   -  person Paul Dixon    schedule 14.10.2011
comment
Да, все таблицы InnoDB. Плохо, что я этого не сказал!   -  person johnsmith    schedule 14.10.2011
comment
Я пропустил ту часть, что вы переместили папку данных в моем первом чтении ... Теперь, когда вы подтвердили, что проблема связана с таблицами InnoDB, взгляните здесь: bugs.mysql.com/bug.php?id=14582 Создание этих таблиц с последующей перезаписью файлов .frm должно решить вашу проблему.   -  person dev-null-dweller    schedule 14.10.2011
comment
Спасибо! Я попробую это как можно скорее, кажется, имеет смысл.   -  person johnsmith    schedule 14.10.2011
comment
Лучше экспортировать SQL и импортировать его в новую базу данных.   -  person DavidTaubmann    schedule 24.09.2015
comment
У меня нет решения, но у меня есть еще один загадочный пример того, как сделать ошибку. У меня есть автономный проект, который читает некоторые таблицы WordPress, а также читает и записывает некоторые другие таблицы в той же базе данных. Он работал нормально, пока я не включил wp-load.php (мне нужно будет вызвать некоторые методы wp). С этим включением я начинаю получать таблицу, которая не существует для каждого запроса моих таблиц.   -  person BryanT    schedule 17.11.2016
comment
Моя проблема (включая Wordpress wp-load.php) была связана с конфликтом переменных. Я использовал $ table_prefix, чтобы сделать имена таблиц уникальными. Wordpress использовал то же имя переменной, заменив мое! Таблица с таким неправильным названием действительно не существовала. Я надеюсь, что это помогает кому-то.   -  person BryanT    schedule 17.11.2016
comment
Вам следует подписаться на: dev. mysql.com/doc/refman/5.6/en/   -  person Chepech    schedule 26.02.2018


Ответы (33)


На всякий случай кому все равно:

У меня была такая же проблема после копирования каталога базы данных напрямую с помощью команды

cp -r /path/to/my/database /var/lib/mysql/new_database

Если вы сделаете это с базой данных, которая использует InnoDB таблицы, вы получите эту сумасшедшую ошибку «таблица не существует», упомянутая выше.

Проблема в том, что вам нужны файлы ib* в корне каталога данных MySQL (например, ibdata1, ib_logfile0 и ib_logfile1).

Когда я их скопировал, у меня это сработало.

person Mike Dacre    schedule 27.07.2012
comment
Спас мою жизнь! Для всех остальных просто убедитесь, что не перезаписали существующие файлы ib *, если вы пытаетесь скопировать их в новую установку. Сделайте резервную копию существующего каталога mysql /, замените его старым, который вы хотите восстановить, mysqldump все, затем восстановите новый mysql /. Затем вы можете правильно импортировать mysqldumps. - person Matthew; 16.11.2012
comment
На Mac для локальной репликации моей базы данных, помимо копирования файла ibdata (расположенного рядом с каталогом базы данных), мне пришлось chown _mysql:wheel имя базы данных dir, ibdata и все файлы в каталоге (используйте chown -R ...). Точно так же разрешения были неправильными внутри каталога, поэтому для отображения таблиц в базе данных требовалось chmod -R 660 databasename. - person Dylan Valade; 16.12.2012
comment
Спасибо, Майк. Просто чтобы уточнить, вам нужно будет перезапустить службу mysql, чтобы она заработала. По крайней мере, я это сделал, и, слава богу, это сработало. Там сохранено много данных! - person Nick Martin; 31.03.2013
comment
Мики, ты молодец, я отформатировал свой комп и восстановил папку с данными ... и craaaaaap почти 90% баз данных не имели таблиц внутри ... я был обречен ... люблю тебя, чувак, спасибо - person www.amitpatil.me; 05.07.2013
comment
Я сделал новую установку. но когда я импортирую свою базу данных, я получаю эту ошибку для своей хранимой процедуры - person java seeker; 11.03.2014
comment
Rock on - возникла эта самая проблема и скопировал файлы. Работаю сейчас. - person dsimer; 01.04.2014
comment
ПРИМЕЧАНИЕ: Не забывайте использовать _1 _ !!! Итак, все после cp используйте эту команду - ›chown mysql:mysql /var/lib/mysql/ -R - person K-Gun; 11.05.2014
comment
ПРИМЕЧАНИЕ 2: Не забудьте применить соответствующее разрешение. В моем случае sudo chmod -R 600 /var/lib/mysql - person augusto; 27.10.2014
comment
Я только что переустановил XAMPP на Mac, похоже, пути не были изменены. У меня все еще такая ошибка, у меня все три файла ib * в каталоге /Applications/XAMPP/xamppfiles/var/mysql/, но не работает. - person ivkremer; 22.04.2015
comment
Спасатель! Когда MySQL умер во время обновления Ubuntu до 15.04, это был последний фрагмент в головоломке восстановления. Спасибо. - person JohnC; 11.05.2015
comment
Что делать, если на целевом сервере эти файлы уже находятся в папке / var / lib / mysql? Я боюсь, что что-нибудь сломаю, если заменю их. - person kentor; 12.08.2015
comment
кентор, нашел что происходит? - person octohedron; 09.09.2015
comment
Вот почему лучше экспортировать SQL и импортировать его в новую базу данных. - person DavidTaubmann; 24.09.2015
comment
Большое спасибо. Это спасло мою задницу от попытки настроить репликацию. - person Dessa Simpson; 30.12.2016
comment
Почему этот ответ не принимается? Humm, OP: профиль показывает Последний раз был 31 окт. - person Majid Fouladpour; 13.01.2017
comment
Оно работает!. Отличное решение для моего окружения (установка OsX Sierra и brew)! - person drmartin; 01.05.2017
comment
Эти безумные (жалкие) ошибки - цена, которую нужно заплатить за такой бесплатный продукт: '( - person Fab; 02.02.2018
comment
Это также случилось со мной после восстановления БД путем копирования папки с данными. Установка этой папки как принадлежащей и принадлежащей группе mysql позволила моему клиенту БД снова увидеть все данные. - person Spencer Williams; 13.04.2018
comment
После копирования файлов ib * я получаю ошибку контрольной суммы: InnoDB: Error: checksum mismatch in data file ./ibdata1. Как от этого избавиться? - person CBenni; 04.06.2018
comment
это спасло мне жизнь ... Я использовал докер для запуска mysql, поэтому я скопировал файл данных: / home / Oliver / db_data в другую папку и перезапустил докер, сопоставив папку данных с новой папкой, все работает .. . - person Han.Oliver; 26.12.2018
comment
Не совершайте ошибку, переименовывая базу данных, когда вы переносите папку mysql в папку tmp. Я сделал это и продолжал получать ошибки при перезапуске сервера mysql. - person Growling Flea; 21.01.2019
comment
Сработало у меня, разобрался за 2 дня :) - person Eddie; 13.03.2021

Для меня в Mac OS (установка MySQL DMG) простая перезагрузка сервера MySQL решила проблему. Я предполагаю, что причиной этого была гибернация.

person Martin    schedule 12.02.2014
comment
Спасибо, исправил ту же проблему и для меня. Моя случилась после того, как моя машина отключилась из-за внезапного отключения электроэнергии. После первого перезапуска машины / запуска MySQL я получил ошибку. Затем я прочитал этот ответ. Я остановил / запустил MySQL через Системные настройки, и это было исправлено. - person Jeff Evans; 11.06.2014
comment
Так же. Я столкнулся с этим после обновления до macOS Sierra 10.12.6. Не уверен, что существует причинно-следственная связь, но время кажется подозрительным. - person Dave Mulligan; 16.08.2017
comment
Спасибо, в какой-то степени сработало; Я перезапустил службу mysql (5.6, windows), затем запустил check table TABLE_ONE; Я получил несколько ошибок, раздел p2 вернул ошибку, idx_blah_1 помечен как поврежденный, а idx_blah_2 отмечен как поврежденный. Теперь я вернулся к запуску optimize table TABLE_ONE; и получаю сообщение об ошибке. Таблица "database.TABLE_ONE" не существует. - person Omar; 09.01.2018
comment
Запуск MySLQ в Мохаве. Перезагрузка через панель системных настроек не дала результата. Мне пришлось перезапустить через командную строку. - person Cortex; 21.01.2019

У меня возникает эта проблема, когда регистр имени таблицы, которую я использую, выключен. Итак, таблица называется «db», но я использовал «DB» в операторе выбора. Убедитесь, что случай такой же.

person dkinzer    schedule 13.10.2011
comment
+1 Имена полей не чувствительны к регистру, а имена таблиц -. Распространенная ошибка и очень раздражающая. - person GolezTrol; 13.10.2011

Эта ошибка также может возникать при установке lower_case_table_names в 1, а затем при попытке доступа к таблицам, которые были созданы со значением по умолчанию для этой переменной. В этом случае вы можете вернуть его к предыдущему значению, и вы сможете читать таблицу.

person golimar    schedule 17.06.2014
comment
Это меня укусило. Я вернул значение, перезапустил базу данных, экспортировал таблицы, вернул значение 1, перезапустил базу данных, повторно импортировал таблицы, и все снова заработало. - person wmarbut; 03.04.2016
comment
В этом и был виноват мой случай. - person bluelurker; 03.02.2021

  1. остановить mysqld
  2. резервная копия папки mysql: cp -a /var/lib/mysql /var/lib/mysql-backup
  3. скопировать папку базы данных со старого компьютера на /var/lib/mysql
  4. переопределить ib * (ib_logfile *, ibdata) из старой базы данных
  5. запустить mysqld
  6. дамп дабаза
  7. mysqldump >dbase.mysql
  8. остановить службу mysql
  9. удалить /var/lib/mysql
  10. переименовать /var/lib/mysql-backup в /var/lib/mysql
  11. запустить mysqld
  12. создать базу данных
  13. mysqldump < dbase.mysql
person user1772382    schedule 03.12.2012
comment
В моем случае мне также пришлось сделать: 10.5 удалить каталог ‹db_name› из-под / var / lib / mysql / - person Tony the Tech; 19.09.2014
comment
это не работает. :( таблица 'tablename.wp_posts' не существует - person Jahirul Islam Mamun; 21.05.2020
comment
Я сделал резервную копию всей папки /var/lib/mysql из-за некоторых непредвиденных обстоятельств, и после переустановки коробки Manjaro это сработало нормально. Шикарный мой добрый человек! Вы получите на меня одно пиво для социального дистанцирования. - person enchance; 29.06.2020

Запустите запрос:

SELECT 
    i.TABLE_NAME AS table_name, 
    LENGTH(i.TABLE_NAME) AS table_name_length,
    IF(i.TABLE_NAME RLIKE '^[A-Za-z0-9_]+$','YES','NO') AS table_name_is_ascii
FROM
    information_schema.`TABLES` i
WHERE
    i.TABLE_SCHEMA = 'database'

К сожалению, MySQL позволяет использовать символы Unicode и непечатаемые символы в имени таблицы. Если вы создали свои таблицы, скопировав код создания из какого-либо документа / веб-сайта, есть вероятность, что где-то есть пространство нулевой ширины.

person dev-null-dweller    schedule 13.10.2011
comment
очень полезный пост, спасибо! но все таблицы ASCII с правильной длиной имени - person johnsmith; 14.10.2011

Я не знаю причины, но в моем случае я решил просто отключить и включить проверку внешних ключей

SET FOREIGN_KEY_CHECKS=0;
SET FOREIGN_KEY_CHECKS=1;
person Bruno Caponi    schedule 29.06.2016
comment
Спасибо брат! В моем случае мне пришлось отключить foreign_key_checks и выполнить запрос выбора для исчезающей таблицы, после чего таблица снова стала нормальной. Я думаю, что есть некоторые нарушения внешнего ключа в строках данных, потому что у меня была прерванная программа до того, как возникла эта проблема. - person Egist Li; 19.11.2016
comment
Пока не удалось выяснить, почему именно, но это также решило мою проблему - person Miroslav Glamuzina; 08.02.2019
comment
В моем случае это помогло запустить SET FOREIGN_KEY_CHECKS=0;, затем выполнить SHOW CREATE TABLE … в той же консоли, а затем снова включить SET FOREIGN_KEY_CHECKS=1;. - person Alexey Vazhnov; 29.06.2020

У меня была такая же проблема, и я искал 2-3 дня, но решение для меня было действительно глупым.

Перезагрузите mysql

$ sudo service mysql restart

Теперь таблицы стали доступны.

person Siraj Alam    schedule 25.02.2017
comment
У меня полностью сработало, хотя моя команда была немного другой: $ sudo /usr/local/mysql/support-files/mysql.server restart - person KirstieBallance; 27.12.2017
comment
Я думаю, это должно быть в верхней части списка вещей, которые нужно попробовать. Стоит попробовать, и в моем случае это сработало. - person Coroos; 31.10.2018

Я только что провел в этом кошмаре три дня. В идеале у вас должна быть резервная копия, которую можно восстановить, а затем просто удалить поврежденную таблицу. Ошибки такого рода могут привести к тому, что ваш ibdata1 станет огромным (более 100 ГБ для небольших таблиц)

Если у вас нет недавней резервной копии, например, если вы полагались на mySqlDump, то ваши резервные копии, вероятно, в какой-то момент в прошлом незаметно сломались. Вам нужно будет экспортировать базы данных, что, конечно, вы не можете сделать, потому что вы получите ошибки блокировки при запуске mySqlDump.

Итак, в качестве обходного пути перейдите к /var/log/mysql/database_name/ и удалите table_name. *

Тогда сразу попробуйте сбросить таблицу; теперь это должно работать. Теперь восстановите базу данных в новую базу данных и восстановите недостающие таблицы. Затем сделайте дамп сломанной базы данных.

В нашем случае мы также постоянно получали mysql has gone away сообщения через случайные промежутки времени во всех базах данных; как только поврежденная база данных была удалена, все вернулось в норму.

person Andy    schedule 28.11.2012
comment
Спасибо, Энди, я понял проблему, с которой столкнулся. Я переместил ibdata1 с диска C на диск D, чтобы сэкономить место на диске C. К счастью, я получил ibdata1 (вместе с файлами ib_logfile1. И ib_logfile0) на моем диске D после прочтения ваших комментариев. Теперь посмотрим, откуда я переместил этот файл и восстановим его там. Тогда, надеюсь, мои столы вернутся. - person AKS; 03.03.2014
comment
Как сразу попробовать сбросить таблицу? У меня такая же проблема, нет резервных копий, поэтому я ищу способ получить хотя бы структуру таблицы, но если вы удалите файлы из каталога, все просто исчезнет? - person mmvsbg; 03.12.2016
comment
Это сработало! Спасибо, - person jstuardo; 30.08.2017

Ok. это прозвучит довольно абсурдно, но посмешите меня.
Для меня проблема была решена, когда я изменил свое утверждение на это:

SELECT * FROM `table`

Я сделал два изменения
1.) Сделал имя таблицы в нижнем регистре - я знаю !!
2.) Использовал специальный символ кавычки = `: это клавиша над вашей TAB

Решение действительно звучит абсурдно, но оно сработало, и сейчас субботний вечер, а я работаю с 9 утра - так что возьму :)

Удачи.

person PlanetUnknown    schedule 13.12.2014
comment
Просто к сведению - таблица MyISAM, а не INNO - person PlanetUnknown; 14.12.2014
comment
Также `называется обратной кавычкой - person Gary; 11.03.2016
comment
@PlanetUnknown Это ключ над вашей ВКЛАДКОЙ. Откуда вы знаете, что это правда? У меня он находится справа от моей клавиши P. Не у всех одинаковая раскладка клавиатуры. - person Francisco Zarabozo; 30.08.2020

Попробуйте запустить sql-запрос, чтобы отбросить табличное пространство перед копированием idb-файла:

ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;

Скопируйте idb-файл

ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;

Перезапустите MySql

person l0pan    schedule 13.04.2014
comment
Ты меня спас :) - person l00k; 14.11.2016
comment
@ I0pan Я попробовал те же шаги, что и упомянутые. Но после ALTER TABLE mydatabase.mytable IMPORT TABLESPACE; он показывает, что таблица не существует. Но это так :( - person Syed Asad Abbas Zaidi; 31.08.2017

Что сработало для меня, так это просто отбросить стол, хотя его не было. Затем я воссоздал таблицу и заново заполнил ее из ранее сделанного дампа sql.

Должна быть какая-то метабаза имен таблиц, и, скорее всего, она все еще существовала, пока я ее не отбросил.

person Zoobra McFly    schedule 19.11.2013
comment
Я создал процедуру, понял, что это должно быть представление. Поэтому я переименовал процедуру, добавив несколько zzz в конце, чтобы иметь ее для справки, и создал одноименное представление. Не удалось получить SELECT, чтобы увидеть это, возникла эта ошибка. ‹Br› Скопировал код в текстовый файл, удалил и представление, и процедуру. Восстановил вид, и все было хорошо. ‹Br› Так что да - семь лет спустя - в некоторых крайних случаях все еще происходит какое-то действие с привидениями / кешированными именами. - person Roger Krueger; 10.03.2020

У меня возникла эта проблема после обновления WAMP, но без резервной копии базы данных.

Это сработало для меня:

  1. Остановить новый WAMP

  2. Скопируйте нужные каталоги базы данных и файл ibdata1 из старой установки WAMP.

  3. Удалить ib_logfile0 и ib_logfile1

  4. Запустить WAMP

Теперь вы должны иметь возможность делать резервные копии своих баз данных. Однако после повторного перезапуска сервера у вас все еще будут проблемы. Итак, переустановите WAMP и импортируйте свои базы данных.

person ykay says Reinstate Monica    schedule 08.06.2016
comment
Я хочу, чтобы люди указывали, где находятся файлы, на которые они ссылаются ... - person MagentoAaron; 19.02.2019
comment
Получил здесь из образа докера mysql, не имеющего читаемых таблиц. Можно подтвердить, что остановка образа, удаление этих файлов и перезапуск снова дали доступ. - person Anthony Harley; 03.06.2019

После переустановки MySQL у меня возникла та же проблема, кажется, что во время установки некоторые файлы конфигурации, в которых хранятся данные о файлах журнала InnoDB, эти файлы ib_logfile * (они же файлы журнала, верно?) Перезаписываются. Чтобы решить эту проблему, я просто удалил файлы ib_logfile *.

person jonathancardoso    schedule 05.09.2012

Была аналогичная проблема с призрачной таблицей. К счастью, был дамп SQL до сбоя.

В моем случае мне пришлось:

  1. Остановить mySQL
  2. Переместить файлы ib * из /var/mysql в резервную копию
  3. Удалить /var/mysql/{dbname}
  4. Перезагрузите mySQL
  5. Восстановить пустую базу данных
  6. Восстановить файл дампа

ПРИМЕЧАНИЕ. Требуется файл дампа.

person Oli Stockman    schedule 05.01.2013
comment
Я думаю, вы имеете в виду /var/lib/mysql вместо /var/mysql - person knocte; 30.06.2016
comment
Единственное, что мне помогло, - это удаление каталогов базы данных и восстановление из резервной копии. - person Jano; 28.04.2017

  1. Выполните mysqldump в базе данных:

    mysqldump -u user -ppass dbname > D:\Back-ups\dbname.sql
    
  2. Восстановить базу данных

    mysql -u user -ppass dbname < D:\Back-ups\dbname.sql
    

Теперь все таблицы в базе данных полностью восстановлены. Пытаться..

SELECT * FROM dbname.tablename;
person Zaw Htoon    schedule 18.01.2018

Я установил MariaDB на новый компьютер, остановил службу Mysql, переименовав папку данных в данные - я решил свою проблему, копируя только Mysql \ data \ table_folders и ibdata1 из разбитой папки данных MySql HD в новая установленная папка данных mysql.

Я пропустил ib_logfile0 и ib_logfile1 (иначе сервер не запустил службу)

Запущен сервис mysql.

Тогда сервер запущен.

person Tony    schedule 10.03.2014

Похоже, что проблема связана (по крайней мере, в моем и некоторых других) с недопустимыми (поврежденными?) Файлами журнала innodb. Вообще говоря, их просто нужно воссоздать.

Вот решения, большинство из которых требует перезапуска mysql.

  • Восстановите файлы журнала (Удалить и перезапустить mysql)
  • Измените размер файлов журнала (MySql 5.6+ восстановит файл для тебя)
  • Если вы выполняете какой-либо тип миграции данных, убедитесь, что вы правильно перенесли правильный файл и предоставили ему разрешения, как уже заявили другие.
  • Проверьте разрешения ваших файлов данных и журналов, что mysql является владельцем обоих
  • Если все остальное не поможет, вам, вероятно, придется воссоздать базу данных.
person SeanDowney    schedule 17.07.2014

Вот еще один сценарий (обновление версии):

Я переустановил свою ОС (Mac OS El Captain) и установил новую версию mysql (используя homebrew). Установленная версия (5.7) оказалась новее моей предыдущей. Затем я скопировал таблицы, включая файлы ib *, и перезапустил сервер. Я мог видеть таблицы в рабочей среде mysql, но когда я пытался выбрать что-нибудь, я получил «Таблица не существует».

Решение:

  1. остановить сервер mysql, например. mysql.server stop или brew services stop mysql
  2. запустите сервер с помощью mysqld_safe --user=mysql --datadir=/usr/local/var/mysql/ (при необходимости измените путь)
  3. запустить mysql_upgrade -u root -p password (в другом окне терминала)
  4. выключите работающий сервер mysqladmin -u root -p password shutdown
  5. перезапустите сервер в обычном режиме mysql.server start или brew services start mysql

Соответствующие документы находятся здесь.

person Roman Kutlak    schedule 31.05.2016
comment
Очень много пробовал, но это было единственное, что мне очень помогло после того, как я переехал на новый сервер со всеми моими базами данных. Спасибо! (Ubuntu 16.04) - person Falk; 03.01.2018

В моем случае я определил триггер в таблице, а затем пытался вставить строку в таблицу. похоже, что-то триггер был ошибочным, и, следовательно, вставка выдает ошибку, таблица не существует.

person Yogesh Kumar Gupta    schedule 31.12.2017
comment
У меня это работает! Проверил каждый триггер и обнаружил, что один триггер нужно улучшить, и он сработал! - person Paresh; 02.05.2019

Скопируйте только ibdata1 файл из старого каталога данных. Не копируйте ib_logfile1 или ib_logfile0 файлы. Это приведет к тому, что MySQL больше не будет запускаться.

person Plabon Dutta    schedule 18.02.2018

Сегодня возникла такая же проблема. Это проблема mysql «Чувствительность к регистру идентификатора».

Пожалуйста, проверьте соответствующий файл данных. Очень вероятно, что имя файла в файловой системе находится в нижнем регистре, но имя таблицы, указанное в команде "show tables", находится в верхнем регистре. Если системная переменная «lower_case_table_names» равна 0, запрос вернет «таблица не существует», поскольку при сравнении имен учитывается регистр, когда «lower_case_table_names» равно 0.

person Hudson Liang    schedule 10.04.2018

Возможно, у вас есть скрытый символ в имени вашей таблицы. Они не появляются, когда вы устраиваете шоу-столы. Можете ли вы сделать «SHOW CREATE TABLE TABLE_ONE» и заполнить вкладку «TABLE_ONE» и посмотреть, вставляет ли он какие-либо скрытые символы. Кроме того, пробовали ли вы отбрасывать и переделывать таблицы. Просто чтобы убедиться, что с привилегиями все в порядке и нет скрытых символов.

person Hoopdady    schedule 13.10.2011
comment
Завершение вкладки не помогает, и я не могу показать таблицу создания, потому что таблица не существует. из ада - person johnsmith; 14.10.2011

Та же самая проблема после импорта резервной копии TimeMachine. Мое решение заключалось в том, чтобы остановить сервер MySQL и исправить разрешения на чтение и запись для файлов ib *.

person user3415481    schedule 13.03.2014

Я думаю, что здесь стоит упомянуть еще один ответ (потому что я пришел сюда с той же проблемой, и это оказалось для меня ответом):

Дважды убедитесь, что имя таблицы в вашем запросе написано точно так же, как и в базе данных.

Вроде очевидная вещь для новичков, но такие вещи, как «пользователь» против «пользователей», могут сбивать с толку людей, и я подумал, что было бы полезно указать здесь в списке. :)

person vazor    schedule 13.08.2014

В моем случае, когда я импортировал экспортированный файл sql, я получал сообщение об ошибке, будто таблица не существует для запроса создания таблицы.

Я понял, что в имени моей базы данных есть символ подчеркивания, а mysql ставит escape-символ непосредственно перед этим.

Я удалил это подчеркивание в имени базы данных, все получилось.

Надеюсь, это поможет и кому-то другому.

person Onur Kucukkece    schedule 28.01.2015

Моя таблица каким-то образом была переименована в ' Customers', то есть с начальным пробелом

Это значило

а) запросы сломались

б) таблица не появилась там, где ожидалось, в алфавитном порядке моих таблиц, что в моем панике означало, что я не мог ее увидеть!

RENAME TABLE ` Customer` TO `Customer`;
person zzapper    schedule 26.08.2016

В моем случае это был параметр SQLCA.DBParm.

я использовал

SQLCA.DBParm = "Databse = "sle_database.text""

но это должно быть

SQLCA.DBParm = "Database='" +sle_database.text+ "'"

Объяснение:

Вы собираетесь соединить три струны:

 1. Database='              -  "Database='"

 2. (name of the database)  - +sle_database.text+

 3. '                       - "'" (means " ' "  without space)

Не используйте пробелы в четвертях. Спасибо моему коллеге Яну.

person Marek    schedule 03.04.2013

Перейдите к: xampp\mysql\data\dbname
внутри dbname есть файл tablename.frm и tablename.ibd.
удалите его, перезапустите mysql и повторите попытку.

person Abu Sufian    schedule 14.06.2017

У меня была такая же проблема в окнах. В дополнение к копированию файлов ib * и каталога mysql в каталог данных thd мне также пришлось сопоставить файл my.ini.

В файле my.ini из моей предыдущей установки не было следующей строки:

innodb-page-size=65536

Но моя новая установка сработала. Возможно, потому, что у меня не было этой опции в старом установщике. Я удалил это и перезапустил службу, и таблицы работали, как ожидалось. Короче говоря, убедитесь, что новый файл my.ini является копией старого, за исключением каталога данных, каталога подключаемых модулей и номера порта, в зависимости от вашей новой установки.

person Rajesh Thennan    schedule 22.12.2019

У меня была такая же проблема, но не из-за скрытого персонажа или «таблицы Шредингера». Проблема (точно такая, как указано выше) появилась после процесса восстановления. Я использую MySQL с администратором версии 1.2.16. Когда необходимо выполнить восстановление, вы должны снять флажок ORIGINAL в целевой схеме и выбрать имя своей базы данных из раскрывающегося списка. После этого проблема была устранена. По крайней мере, это было причиной в моей базе данных.

person OSCAR    schedule 06.04.2012

Если в имени таблицы есть точка, она не будет выполнена для SELECT * FROM poorly_named.table;

Используйте обратные кавычки, чтобы найти таблицу SELECT * FROM `poorly_named.table`;

person Chris    schedule 22.09.2014

В моем случае это было без перемещения каталога данных или каких-либо манипуляций с файлами. Это случилось одним прекрасным утром.

Так как, как ни странно, я смог выгрузить таблицу с помощью mysqldump, несмотря на то, что MySQL иногда жаловался на то, что «таблица не существует», я решил это, выгрузив схему + данные таблицы, затем DROP-ing таблицы и повторно СОЗДАЙТЕ его сразу после, а затем импортируйте.

person Fabien Haddadi    schedule 10.08.2016