2012-03-05 14 views
19

Kiedy chcę wykonać update zapytanie na moim stole mam błąd mówiąc:Tabela jest „tylko do odczytu”

1036 - Tabela data jest tylko do odczytu.

Jak mogę to naprawić?

Atrybuty tabeli w /var/db/mysql są ustawione na 777.

Funkcja "Napraw tabelę" wydaje się nie pomagać.

Czy mogę coś z tym zrobić?

Odpowiedz

24

który jest właścicielem/var/db/mysql i do której grupy należą, powinien być mysql: mysql. będziesz też musiał ponownie uruchomić mysql na zmiany zaczęły wpływać

również sprawdzić, czy aktualnie zalogowany użytkownik miał dostęp do aktualizacji GRANT

1

MySQL nie ma uprawnień do zapisu do pliku bazy danych. Sprawdź uprawnienia i właściciela pliku.

+0

jeśli zmienić uprawnienia ręcznie nie zapomnij, aby wydać polecenie PRIVILEGES kolor. – Jody

4

Należy zmienić właściciela do mysql: mysql.

użyj polecenia: chown -Rf mysql:mysql /var/lib/mysql/DBNAME

+0

Dzięki, za pomocą argumentu '-Rf' pracował dla mnie! –

-2

Innym sposobem, aby otrzymać ten błąd jest stworzenie tabeli z „jak” oświadczenie i używać jako źródła połączonej tabeli. W ten sposób nowo utworzony stół jest tylko do odczytu i nie może "otrzymywać" żadnych nowych rekordów.

tak

CREATE TABLE ic.icdrs_kw37 LIKE ic.icdrs ... #<- a merged table. 

następnie:

REPLACE INTO ic.icdrs_kw37 ... # -> "Table is read-only" 

bug lub funkcji?

20

W moim przypadku plik konfiguracyjny mysql miał innodb_force_recovery = 1. Komentowanie, że na zewnątrz rozwiązano problem. Mam nadzieję, że to komuś pomaga.

+0

innodb_force_recovery to wydanie, skomentuj tę linię lub usuń ją – Thoman

+0

To działało również dla mnie. Dzięki! –

+0

W /etc/my.cnf Ustawiłem: innodb_file_per_table = 0 i innodb_force_recovery = 0. następnie uruchom ponownie usługę mysql i nareszcie działa! Dzięki – atwebceo

2

(Ta odpowiedź jest związane z hasłem, ale nie do pierwotnego pytania.)

W przypadku, gdy (jak ja) starają się czasowo zmienić dane poprzez interfejs MySQL Workbench:

  • Jeśli tabela nie ma klucza głównego, MySQL Workbench nie ma możliwości zidentyfikowania wiersza, który próbujesz zmienić, dlatego nie można go zmienić.

  • W takim przypadku rozwiązaniem jest zmiana danych za pośrednictwem innej trasy lub po prostu dodanie klucza podstawowego do tabeli.

W każdym razie, mam nadzieję, że ktoś pomaga :)

Powiązane problemy