2012-03-05 52 views
19

Cuando quiero ejecutar una consulta update en mi mesa me dieron un error que dice:tabla se 'sólo lectura'

1036 - Tabla data es de sólo lectura.

¿Cómo puedo solucionar eso?

Los atributos de tabla en /var/db/mysql se establecen en 777.

La función 'Reparar tabla' no parece ayudar.

¿Hay algo que pueda hacer con eso?

Respuesta

24

quien posee/var/db/mysql y en qué grupo están, debe ser mysql: mysql. También tendrá que reiniciar MySQL para que los cambios surtan efecto

comprobar también que el usuario actualmente conectado tenido acceso GRANT para actualizar

1

MySQL no tiene acceso de escritura al archivo de la base de datos. Compruebe los permisos y el propietario del archivo.

+0

si cambia los permisos de forma manual, no se olvide de emitir un comando FLUSH PRIVILEGIOS. – Jody

4

Usted debe cambiar el propietario de MySQL: MySQL.

Use este comando: chown -Rf mysql:mysql /var/lib/mysql/DBNAME

+0

¡Gracias, usando el argumento '-Rf' trabajado para mí! –

-2

Otra manera de recibir este error es crear su mesa con un "Like" declaración y su uso como fuente de una mesa fusionada. De esta forma, la tabla de creación reciente es de solo lectura y no puede "recibir" ningún registro nuevo.

por lo

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

a continuación:

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

falla o función?

20

En mi caso, el archivo de configuración de mysql tenía innodb_force_recovery = 1. Al comentar eso resuelto el problema. Espero que ayude a alguien.

+0

innodb_force_recovery es un problema, comente esta línea o elimínela – Thoman

+0

Esto también funcionó para mí. ¡Gracias! –

+0

En /etc/my.cnf Configuré: innodb_file_per_table = 0 y innodb_force_recovery = 0. luego, reinicia el servicio mysql y ¡finalmente funciona! Gracias – atwebceo

2

(Esta respuesta está relacionada con el titular, pero no a la pregunta original.)

En caso de que (como yo) está tratando de alterar temporalmente los datos a través de la interfaz de MySQL Workbench:

  • Si la tabla no tiene una clave principal, MySQL Workbench no tiene forma de identificar la fila que está tratando de alterar, por lo que no puede modificarla.

  • La solución en ese caso es alterar los datos a través de otra ruta, o simplemente agregar una clave principal a la tabla.

En cualquier caso, espero que ayude a alguien :)

Cuestiones relacionadas