当我尝试使用phpmyadmin向表中插入记录时,它会给我
#1036 - Table 'sch_portfolio' is read only
我在一些文章中看到他们说如果这个表的所有者是mysql以外的东西,就会发生这种情况。所以我将所有者设置为mysql并重新启动服务器。我仍然得到同样的错误。任何帮助将非常感激。提前致谢
drwxrwxrwx 2 mysql mysql 4096 Jul 13 15:27 schooltap
答案 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。 您可以做两个选择
首先,您必须进入服务器并获得特权
sudo su
然后我去了mysql的隐藏文件夹:
cd /var/lib/mysql/
然后我运行以下命令:
chown -R mysql:mysql *
这将解决您的问题
然后查看是否有效,您必须重新启动mysql
service mysql restart
或者您可以简单地转到phpmyadmin,然后到数据库中选择所有表 然后您必须选择修复选项 (对不起,我用意大利语获得了phpmyadmin) 您也可以在bash中执行此操作,
这将起作用! 如果没有选项,请尝试重新安装mysql
答案 4 :(得分:0)
我怀疑在我的情况下,这是由隐藏的反恶意软件防病毒软件Bytefence(可能是它与其他东西捆绑在一起)引起的。卸载此防病毒软件后,问题就消失了。
答案 5 :(得分:0)
您可以更改存储引擎,因此不必替换设置。如果将其设置为 InnoDB ,您的问题将得到解决。 (更改它可以在phpmyadmin的“操作”选项卡中进行)