Подтвердить что ты не робот

Таблица "только для чтения"

Когда я хочу выполнить запрос update в моей таблице, я получил сообщение об ошибке:

1036 - Таблица data доступна только для чтения.

Как я могу это исправить?

Атрибуты таблицы в /var/db/mysql установлены на 777.

Функция "Восстановить таблицу", похоже, не помогает.

Есть ли что-нибудь, что я могу с этим сделать?

4b9b3361

Ответ 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"

ошибка или функция?