【问题标题】:MySQL error 1036: table is read onlyMySQL 错误 1036:表是只读的
【发布时间】:2013-07-13 10:42:19
【问题描述】:

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

#1036 - Table 'sch_portfolio' is read only 

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

drwxrwxrwx 2 mysql mysql     4096 Jul 13 15:27 schooltap

【问题讨论】:

  • 假设mysqld 进程在mysql 用户下运行。该用户是否有权进入文件路径中的每个目录?您连接到 mysqld 的 MySQL 用户是否被授予写入表的权限?
  • 这种情况是只发生在一个表/数据库上还是发生在所有表/数据库上?也许 MySQL 服务器处于只读模式,复制从属服务器经常出现这种情况 - 检查 dev.mysql.com/doc/refman/5.5/en/…

标签: mysql phpmyadmin


【解决方案1】:

确保你没有设置 innodb_force_recovery > 0 in my.cnf

【讨论】:

  • ^ 当其他建议都没有帮助时,这解决了我的问题。非常感谢!
  • @dklovedoctor 我试过了,它开始工作,但我面临的问题是我无法插入或更新任何表格,因为它给了我错误 #1036 Table "....... " 是只读的
  • 太棒了!我忘了我已经启用了! Y感谢您的建议!
  • @dev_khan 我想我可能帮不了你。但是您可以检查 mysql 文件夹权限...
  • 同样的问题。我正要结束我的生命。谢谢。
【解决方案2】:

需要超级用户权限才能做到这一点,最常用的是 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’

【讨论】:

  • 感谢您的回复.. 但我已经这样做了。我仍然遇到同样的错误。
  • /var/lib/mysql 它自己是 mysql 拥有的。并且用户组也设置为mysql。如何检查当前登录用户是否有权更新天气?
  • select * from information_schema.user_privileges where grantee like "'user'%";
  • 和“chmod 755 /var/lib/mysql”
  • 它在我的 Mac 上工作,但我的 /mysql 文件夹所在的地址不同
【解决方案3】:

我遇到了类似的问题,我的解决方案是将表文件的所有者/组更改为 mysql。 你可以做两个选择

1

首先你必须进入你的服务器并获得特权

sudo su

然后我去隐藏文件夹mysql做:

cd /var/lib/mysql/

然后我运行了这个命令:

chown -R mysql:mysql *

这会解决你的问题

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

service mysql restart

2

或者你可以简单地去 phpmyadmin 然后去你的数据库选择所有的表 然后你必须选择选项 repair (对不起,我有意大利语的 phpmyadmin) 您也可以在 bash 中执行此操作,

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

【讨论】:

    【解决方案4】:

    据我所知,这是因为 storage engine 。 如果你select storage engine as MRG_MYISAM 那么这将使你的表只有readable,你不能插入数据。 所以,select myisam as storage engine ..

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-28
          • 1970-01-01
          • 2015-05-30
          • 2015-01-23
          • 1970-01-01
          • 2013-05-17
          相关资源
          最近更新 更多