Перейти к содержимому

Почему sql не видит таблицу

  • автор:

Почему нет таблиц, хотя они есть (mysql)?

Приветствую!
На сервере случилось крайне странное.
Таблицы есть, но таблиц нету О_о.
Т.е. SHOW TABLES; показывает,
а select * from tablename говорит, что нет такой таблицы.

mysqlcheck говорит следующее:

и так со всеми!
Что могло случиться (предполагаю повреждение фс т.к. сервер как раз ушёл в этот момент в даун) и главное — как починить?

P.S. бэкап данных есть, бэкапа структуры нет.

  • Вопрос задан более трёх лет назад
  • 1229 просмотров
  • Facebook
  • Вконтакте
  • Twitter

HanDroid

Сделайте в консоли
show full tables

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

Если пишете на php посмотрите внутри движка. Мб там есть миграции и можно их накатить что бы структуру вернуть.

mysql не выводит результат запроса, пишет, что такой таблицы не существует. Запрос: SELECT * FROM Сотрудники.

Проверил через phpmyadmin:
1. Mysql нормально работает с русскими названиями таблиц
2. Запрос нормально работает с русскими названиями таблиц не обрамленными апострофами.

В вашем случае, я думаю, возможна проблема с различием кодировок между клиентом и сервером.
Выполните запрос типа
SHOW TABLES;
если название вашей таблицы «Сотрудники» вернет «кракозяброй», то дело в кодировке и сервер просто не понимает к какой таблице вы делаете запрос.

PS Названия таблиц, столбцов лучше выполнять написанными на латинице, а в идеале написанными на англ. языке как предложил Юрий.

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

Я изменил datadir установки MySQL, и после нескольких шагов он работал нормально. Каждая базовая база была перемещена правильно, но одна.

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

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

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

Кто-нибудь знает, что это такое?

33 ответа

На всякий случай все еще заботятся:

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

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

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

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

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

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

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

  1. остановить MySQL
  2. резервная копия папки mysql: cp -a/var/lib/mysql/var/lib/mysql-backup
  3. скопировать папку базы данных со старой машины в /var/lib/mysql
  4. переопределить ib * (ib_logfile *, ibdata) из старой базы данных
  5. начать MySQL
  6. свалка базы данных
  7. mysqldump >dbase.mysql
  8. остановить службу MySQL
  9. удалить /var/lib/mysql
  10. переименуйте /var/lib/mysql-backup в /var/lib/mysql
  11. начать MySQL
  12. создать базу данных
  13. mysqldump < dbase.mysql

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

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

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

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

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

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

SQL Management Studio не распознает существование таблицы после создания по сценарию

Поэтому, если я создаю новую таблицу в редакторе запросов в SQL Management Studio после обновления базы данных, я могу видеть эту таблицу и работать с ней. Однако, если я хочу запустить другой запрос, ссылаясь на эту таблицу из редактора запросов, он не пересчитывает эту таблицу. Я пробовал обновить на уровне БД и на уровне таблицы, но это не имеет значения. Однако, если я уйду из студии управления, то снова открою ее, и все будет в порядке.

Итак, я запускаю это, а затем запускаю это.

Это не говорит о том, что государств не существует. Также Штаты не отображаются в интеллигенции. Что мне делать с

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Car Rental HPN Inside the Terminal