当我想在我的桌子上执行update
查询时,我收到一条错误消息:
1036 - 表
data
是只读的。
我该如何解决这个问题?
/var/db/mysql
中的表属性设置为777
。
'修复表'功能似乎没有帮助。
有什么我可以做的吗?
谁拥有/ var / db / mysql以及它们属于哪个组,应该是mysql:mysql。你还需要重新启动mysql才能使更改生效
还要检查当前登录的用户是否具有GRANT访问权限
在我的情况下,mysql配置文件有innodb_force_recovery = 1.评论说出来解决了这个问题。希望它可以帮助某人。
您应该将所有者更改为MYSQL:MYSQL。
使用此命令:chown -Rf mysql:mysql /var/lib/mysql/DBNAME
(这个答案与标题有关,但与原始问题无关。)
如果您(像我一样)试图通过MySQL Workbench界面临时更改数据:
在任何情况下,我希望它有助于某人:)
我的情况是每次我需要在my.ini中编辑“innodb_force_recovery = 1”来强制mysql启动,并且错误日志显示一些错误说:
试图打开以前打开的表空间。以前的表空间mysql / innodb_table_stats在文件路径中使用空格ID:1:。\ mysql \ innodb_table_stats.ibd。无法打开在文件路径中使用空格ID:1的表空间profile / profile_commentmeta:。\ profile \ profile_commentmeta.ibd
我不知道为什么这个文件无法打开,它也导致其他数据库出现这么多其他“表只读”问题。
所以这里是我如何以一种简单的方式解决这个问题,而不会伤害其他文件。
1首先,确保在my.ini文件中的[mysqld]下添加innodb_force_recovery = 1,并且它在路径下运行:X:\ xampp \ mysql \ bin \ my.ini
2然后,下一步,通过导出选项卡下的localhost / phpmyadmin导出所有数据库,并将它们存储在某处,如下所示:
3注释掉数据文件夹到数据后退,然后创建一个新的数据文件夹,
4下一步,从phpmyadmin面板导入所有.sql数据库,也请将phpmyadmin文件夹从旧的data-bak文件夹复制到新的数据文件夹。如果需要任何文件,请返回data-bak文件夹进行复制和粘贴。
现在所有修复完成,不需要强制mysql每次启动。希望这也适合你。
MySQL没有对数据库文件的写访问权。检查权限和文件的所有者。
在Windows上我使用Xampp服务器我将my.ini innodb_force_recovery = 1
中的行注释到#innodb_force_recovery = 1
问题已解决
我通过编辑应用程序解决了同样的问题。装甲配置文件。在这里找到答案:https://stackoverflow.com/a/14563327/31755661
另一种接收此错误的方法是使用“Like”语句创建表,并将合并表用作源。这样,新创建的表是只读的,不能“接收”任何新记录。
所以
CREATE TABLE ic.icdrs_kw37 LIKE ic.icdrs ... #<- a merged table.
然后:
REPLACE INTO ic.icdrs_kw37 ... # -> "Table is read-only"
错误或功能?