MySQL, копирование файлов таблиц приводит к появлению "ERROR 1017 (HY000): не удается найти файл:" хотя его там

Я хочу скопировать таблицы базы данных с моего производственного сервера на локальную тестовую машину, чтобы я мог выполнять проверку om (копии) реальных данных.

Я остановил mysql и удалил все файлы frm, MYD и MYI. Запуск mysql здесь и запрос таблиц show дают пустой набор результатов. Затем я отключил mysql и скопировал все файлы frm, MYD и MYI с сервера. При запуске mysql "show tables" отображает таблицы как ожидаемые, но, пытаясь их запросить, я получаю сообщение об ошибке

ОШИБКА 1017 (HY000): Не удается найти файл: './WhateverTableIQuery.frm' (errno: 13)

Но файл WhateverTableIQuery.frm находится на диске и идентичен файлу на сервере.

Любые идеи о том, что может быть проблемой?

Ответ 1

Я предлагаю попробовать две вещи:

1. Проверка разрешений

Убедитесь, что ваш каталог данных MySQL и все файлы в нем принадлежат пользователю mysql и группе mysql. Это может быть не так, если вы скопировали файлы на локальный тестовый компьютер как пользователь root:

chown -R mysql:mysql your-mysql-data-dir-here

2. Восстановление поврежденных таблиц

Используйте mysqlcheck, чтобы проверить поврежденные таблицы и исправить их, если они найдут:

mysqlcheck -u root -p --auto-repair --all-databases

Если вы по-прежнему не можете использовать таблицы после этого, дайте mysqldump go!

Ответ 2

Я столкнулся с такой же проблемой после восстановления базы данных MySQL с файлами frm и MYD. После нескольких часов работы я заметил, что я настроил каталог базы данных только с правами на чтение и запись для пользователя mysql, но не с правами на выполнение. После добавления разрешения на запуск в каталог базы данных проблема была решена.

Ответ 3

У меня была такая же проблема пару минут назад, и мне потребовалось несколько минут, чтобы понять, что у меня недостаточно прав для доступа к файлу .sql, который я хотел импортировать.

Чтобы избавиться от этой проблемы, вы можете просто перенести файл в то место, которое, как вы знаете, имеете доступ (с вашим текущим пользователем). (например, ~/Home_directory).

Я надеюсь, что смогу помочь какой-то одинокой душе, которая искала ответ так же, как и я.

Ответ 4

У меня была та же проблема и сделал это...

  • Удалить папку миграции
  • Отбросить таблицу _migrationhistory
  • Включение, добавление и обновление миграции

Я уверен, что есть намного лучший способ решить эту проблему, но это сработало для меня.

Ответ 5

Я изменил разрешения для каталога mysql-data, а также файл <table>.frm.
Если вы используете пользователя root:

  • chmod 600 mysql-data-directory chmod 600
  • MySQL-данных каталога /tableOfData.frm

При использовании в качестве пользователя без полномочий root:

  • chmod 660 mysql-data-directory
  • chmod 660 mysql-data-directory/tableOfData.frm

Ответ 6

Эта ошибка, "Общая ошибка: 1017 Не удается найти файл", также произошла в Windows с WAMP, если таблица не существует.

Ответ 7

Попробуйте следующее:

  • восстановить всю базу данных
  • изменить разрешение на mysql: mysql
  • перезапустить службу mysql

Один из них будет работать.