Таблица "только для чтения"
Когда я хочу выполнить запрос update
в моей таблице, я получил сообщение об ошибке:
1036 - Таблица data
доступна только для чтения.
Как я могу это исправить?
Атрибуты таблицы в /var/db/mysql
установлены на 777
.
Функция "Восстановить таблицу", похоже, не помогает.
Есть ли что-нибудь, что я могу с этим сделать?
Ответы
Ответ 1
которому принадлежит /var/db/mysql и в какой группе они находятся, должен быть mysql: mysql. вам также потребуется перезапустить mysql, чтобы изменения повлияли на
также проверьте, что у текущего пользователя, имеющего доступ к учетной записи, был доступ GRANT к обновлению
Ответ 2
В моем случае файл конфигурации mysql имел innodb_force_recovery = 1. Комментируя это, проблема была решена. Надеюсь, это поможет кому-то.
Ответ 3
Вы должны изменить владельца на MYSQL: MYSQL.
Используйте эту команду: chown -Rf mysql:mysql /var/lib/mysql/DBNAME
Ответ 4
(Этот ответ связан с заголовком, но нет оригинального вопроса.)
Если вы (как и я) пытаетесь временно изменить данные через интерфейс Workbench MySQL:
-
Если таблица не имеет первичного ключа, MySQL Workbench не может идентифицировать строку, которую вы пытаетесь изменить, поэтому вы не можете ее изменить.
-
Решение в этом случае состоит в том, чтобы либо изменить данные по другому маршруту, либо просто добавить первичный ключ в таблицу.
В любом случае, я надеюсь, что это поможет кому-то:)
Ответ 5
Моя ситуация - каждый раз, когда мне нужно было отредактировать " innodb_force_recovery = 1 " в my.ini, чтобы заставить mysql запускаться, и в журнале ошибок отображалась какая-то ошибка:
Попытка открыть ранее открытое табличное пространство. Предыдущее табличное пространство mysql/innodb_table_stats использует идентификатор пространства: 1 в filepath:.\Mysql\innodb_table_stats.ibd. Не удается открыть профиль табличного пространства /profile_commentmeta, который использует идентификатор пространства: 1 в filepath:.\Profile\profile_commentmeta.ibd
Я не знал, почему этот файл не удалось открыть, и это вызвало так много других проблем "только чтение таблицы" и для других баз данных.
Итак, вот как я исправил эту проблему простым способом, не повреждая другие файлы.
1 Прежде всего, убедитесь, что вы добавили innodb_force_recovery = 1 ниже [mysqld] в файл my.ini, и он работает по пути: X:\xampp\mysql\bin\my.ini
2 Затем следующим шагом экспортируйте все базы данных через localhost/phpmyadmin на вкладке экспорта и сохраните их где-нибудь, например так:
![export .sql databases somewhere]()
-Закомментируйте filefolder данных в данный Бак, а затем создать новый filefolder данных,
![enter image description here]()
4 Следующим шагом импортируйте всю базу данных .sql обратно из панели phpmyadmin, пожалуйста, также скопируйте папку phpmyadmin из старой папки data-bak в новую папку данных data. Если какой-либо файл необходим, вернитесь в файловую папку data-bak для копирования и вставки.
![enter image description here]()
Теперь все исправлено и сделано, не нужно заставлять mysql запускаться каждый раз. Надеюсь, это также работает для вас.
Ответ 6
MySQL не имеет права на запись в файл базы данных. Проверьте разрешения и владельца файла.
Ответ 7
В Windows я использую сервер innodb_force_recovery = 1
я комментирую строку в my.ini innodb_force_recovery = 1
до #innodb_force_recovery = 1
проблема решена
Ответ 8
Я решил ту же проблему, отредактировав приложение. файл конфигурации брони. Нашел ответ здесь: fooobar.com/questions/184742/... 1
Ответ 9
Другим способом получения этой ошибки является создание вашей таблицы с помощью инструкции "Как" и использование в качестве источника объединенной таблицы. Таким образом, новая таблица создается только для чтения и не может "получать" новые записи.
так
CREATE TABLE ic.icdrs_kw37 LIKE ic.icdrs ... #<- a merged table.
то
REPLACE INTO ic.icdrs_kw37 ... # -> "Table is read-only"
ошибка или функция?