tabla - optimizar consultas lentas mysql
La tabla es ''solo lectura'' (7)
Cuando deseo ejecutar una consulta de update
en mi tabla, aparece un error que dice:
1036 - Los
data
tabla son de solo lectura.
¿Cómo puedo arreglar eso?
Los atributos de la tabla en /var/db/mysql
se establecen en 777
.
La función ''Reparar tabla'' no parece ayudar.
¿Hay algo que pueda hacer con eso?
(Esta respuesta está relacionada con el titular, pero no con la pregunta original).
En caso de que usted (como yo) esté intentando 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 intenta modificar, por lo tanto, 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 :)
Debes cambiar de propietario a MYSQL: MYSQL.
Utilice este comando: chown -Rf mysql:mysql /var/lib/mysql/DBNAME
En mi caso, el archivo de configuración de mysql tenía innodb_force_recovery = 1. Comentando eso resolví el problema. Espero que ayude a alguien.
Mi situación es cada vez que necesitaba editar " innodb_force_recovery = 1 " en my.ini para forzar el inicio de mysql, y el registro de errores mostraba un error:
Se intentó abrir un espacio de tabla previamente abierto. Anterior tablespace mysql / innodb_table_stats usa el ID de espacio: 1 en filepath:. / Mysql / innodb_table_stats.ibd. No se puede abrir el perfil de espacio de tablas / profile_commentmeta que usa el ID de espacio: 1 en filepath:. / Profile / profile_commentmeta.ibd
No sabía por qué este archivo no podía abrirse y también causó muchos otros problemas de "tabla de solo lectura" a otras bases de datos.
Así que aquí es cómo solucioné este problema de una manera sencilla sin dañar otros archivos.
1 En primer lugar, asegúrese de agregar innodb_force_recovery = 1 debajo de [mysqld] en el archivo my.ini, y está funcionando en la ruta: X: / xampp / mysql / bin / my.ini
2 Luego, en el siguiente paso, exporte todas las bases de datos a través de localhost / phpmyadmin en la pestaña de exportación , y almacénelas en algún lugar, como esto:
3 comente la carpeta de archivos de datos a data-bak , luego cree una nueva carpeta de archivos de datos ,
4 El siguiente paso es importar toda la base de datos .sql desde el panel phpmyadmin , por favor , también copie la carpeta de archivos phpmyadmin de la carpeta de datos antigua de datos a la nueva carpeta de archivos de datos . Si es necesario algún archivo, vuelva a la carpeta de archivos de data-bak para copiar y pegar.
Ahora todo arreglado y listo, no es necesario forzar a mysql para que comience cada vez. Espero que esto también te funcione.
MySQL no tiene acceso de escritura al archivo de base de datos. Compruebe los permisos y el propietario del archivo.
Otra forma de recibir este error es crear su tabla con una declaración "Me gusta" y usar como fuente una tabla combinada. De esa manera, la nueva tabla de creación es de solo lectura y no puede "recibir" ningún registro nuevo.
asi que
CREATE TABLE ic.icdrs_kw37 LIKE ic.icdrs ... #<- a merged table.
entonces:
REPLACE INTO ic.icdrs_kw37 ... # -> "Table is read-only"
error o característica?
quién posee / var / db / mysql y en qué grupo están, debería ser mysql: mysql. También necesitarás reiniciar mysql para que los cambios surtan efecto.
También verifique que el usuario actualmente conectado haya tenido acceso GRANT para actualizar