MySQL错误1036:表是只读的

时间:2013-07-13 10:42:20

标签: mysql phpmyadmin

当我尝试使用phpmyadmin向表中插入记录时,它会给我

#1036 - Table 'sch_portfolio' is read only 

我在一些文章中看到他们说如果这个表的所有者是mysql以外的东西,就会发生这种情况。所以我将所有者设置为mysql并重新启动服务器。我仍然得到同样的错误。任何帮助将非常感激。提前致谢

drwxrwxrwx 2 mysql mysql     4096 Jul 13 15:27 schooltap

6 个答案:

答案 0 :(得分:25)

确保您没有设置 innodb_force_recovery> my.cnf中的0

答案 1 :(得分:9)

需要超级用户权限来执行此操作,最常见的是使用sudo来实现此目的。

也按顺序更改文件的所有者。

sudo chown -R mysql:mysql /var/lib/mysql

重新启动Mysql以进行更改

sudo service mysql restart

谁拥有sch_portfolio以及他们在哪个群组,应该是mysql:mysql。你还需要重新启动mysql才能使更改生效

还要检查当前登录的用户是否具有GRANT访问权限

MySQL服务器以user mysql运行,而不是我登录的用户。为了使其能够访问仅具有用户权限的文件,它们必须由用户‘mysql’拥有,因为这是服务器正在运行的内容。确保mysql使用的文件夹和文件属于用户'mysql'。这些文件位于/var/lib/mysql目录中。目录本身也应属于‘mysql’

答案 2 :(得分:3)

据我说,这是因为存储引擎。 如果您select storage engine as MRG_MYISAM那么只会使您的表格readable,则无法插入数据。 所以,select myisam as storage engine ..

答案 3 :(得分:1)

我有一个类似的问题,对我来说,解决方案是将表文件的所有者/组更改为mysql。 您可以做两个选择

1

首先,您必须进入服务器并获得特权

sudo su

然后我去了mysql的隐藏文件夹:

cd /var/lib/mysql/

然后我运行以下命令:

chown -R mysql:mysql *

这将解决您的问题

然后查看是否有效,您必须重新启动mysql

service mysql restart

2

或者您可以简单地转到phpmyadmin,然后到数据库中选择所有表 然后您必须选择修复选项enter image description here (对不起,我用意大利语获得了phpmyadmin) 您也可以在bash中执行此操作,

这将起作用! 如果没有选项,请尝试重新安装mysql

答案 4 :(得分:0)

我怀疑在我的情况下,这是由隐藏的反恶意软件防病毒软件Bytefence(可能是它与其他东西捆绑在一起)引起的。卸载此防病毒软件后,问题就消失了。

答案 5 :(得分:0)

您可以更改存储引擎,因此不必替换设置。如果将其设置为 InnoDB ,您的问题将得到解决。 (更改它可以在phpmyadmin的“操作”选项卡中进行)