Вопрос:
Когда я хочу выполнить запрос update в моей таблице, я получил сообщение об ошибке:
1036 – Таблица data доступна только для чтения.
Как я могу это исправить?
Атрибуты таблицы в /var/db/mysql установлены на 777.
Функция “Восстановить таблицу”, похоже, не помогает.
Есть ли что-нибудь, что я могу с этим сделать?
Лучший ответ:
которому принадлежит /var/db/mysql и в какой группе они находятся, должен быть mysql: mysql. вам также потребуется перезапустить mysql, чтобы изменения повлияли на
также проверьте, что у текущего пользователя, имеющего доступ к учетной записи, был доступ GRANT к обновлению
Ответ №1
В моем случае файл конфигурации mysql имел innodb_force_recovery = 1. Комментируя это, проблема была решена. Надеюсь, это поможет кому-то.
Ответ №2
Вы должны изменить владельца на MYSQL: MYSQL.
Используйте эту команду: chown -Rf mysql:mysql /var/lib/mysql/DBNAME
Ответ №3
(Этот ответ связан с заголовком, но нет оригинального вопроса.)
Если вы (как и я) пытаетесь временно изменить данные через интерфейс Workbench MySQL:
-
Если таблица не имеет первичного ключа, MySQL Workbench не может идентифицировать строку, которую вы пытаетесь изменить, поэтому вы не можете ее изменить.
-
Решение в этом случае состоит в том, чтобы либо изменить данные по другому маршруту, либо просто добавить первичный ключ в таблицу.
В любом случае, я надеюсь, что это поможет кому-то:)
Ответ №4
Моя ситуация – каждый раз, когда мне нужно было отредактировать ” innodb_force_recovery = 1 ” в my.ini, чтобы заставить mysql запускаться, и в журнале ошибок отображалась какая-то ошибка:
Попытка открыть ранее открытое табличное пространство. Предыдущее табличное пространство mysql/innodb_table_stats использует идентификатор пространства: 1 в filepath:.Mysqlinnodb_table_stats.ibd. Не удается открыть профиль табличного пространства /profile_commentmeta, который использует идентификатор пространства: 1 в filepath:.Profileprofile_commentmeta.ibd
Я не знал, почему этот файл не удалось открыть, и это вызвало так много других проблем “только чтение таблицы” и для других баз данных.
Итак, вот как я исправил эту проблему простым способом, не повреждая другие файлы.
1 Прежде всего, убедитесь, что вы добавили innodb_force_recovery = 1 ниже [mysqld] в файл my.ini, и он работает по пути: X:xamppmysqlbinmy.ini
2 Затем следующим шагом экспортируйте все базы данных через localhost/phpmyadmin на вкладке экспорта и сохраните их где-нибудь, например так:
-Закомментируйте filefolder данных в данный Бак, а затем создать новый filefolder данных,
4 Следующим шагом импортируйте всю базу данных .sql обратно из панели phpmyadmin, пожалуйста, также скопируйте папку phpmyadmin из старой папки data-bak в новую папку данных data. Если какой-либо файл необходим, вернитесь в файловую папку data-bak для копирования и вставки.
Теперь все исправлено и сделано, не нужно заставлять mysql запускаться каждый раз. Надеюсь, это также работает для вас.
Ответ №5
MySQL не имеет права на запись в файл базы данных. Проверьте разрешения и владельца файла.
Ответ №6
В Windows я использую сервер innodb_force_recovery = 1 я комментирую строку в my.ini innodb_force_recovery = 1 до #innodb_force_recovery = 1 проблема решена
Ответ №7
Я решил ту же проблему, отредактировав приложение. файл конфигурации брони. Нашел ответ здесь: qaru.site/questions/184742/… 1
Ответ №8
Другим способом получения этой ошибки является создание вашей таблицы с помощью инструкции “Как” и использование в качестве источника объединенной таблицы. Таким образом, новая таблица создается только для чтения и не может “получать” новые записи.
так
CREATE TABLE ic.icdrs_kw37 LIKE ic.icdrs … #<- a merged table.
то
REPLACE INTO ic.icdrs_kw37 … # -> «Table is read-only»
ошибка или функция?