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
Один из них будет работать.