Linux下MySql出现#1036 - Table ' user' is read only 错误解决方法(转)

前几天网站备案被注销了,只有暂时迁移到国外再做打算,换了两台VPS,第一台用服务商配置好的环境+Kloxo管理平台,可能内存少点,或者我哪里没有设置好,导致用不到几个小时就访问不了,又得重启VPS才行,所以前两天会出现偶尔访问不了博客的情况。

      今天刚把第二台VPS的环境配置好,网站迁移过来,在美国洛杉矶机房。现在这台的vps内存稍大点,应该可以确保平稳运行了,速度也勉强可以。

      这次博客搬家出现了点小情况,不过还是顺利解决了。

      这次网站搬家采用直接打包mysql数据库和网页文件的形式进行迁移,上传好mysql data目录里面的网站数据库至VPS上mysql存放数据库的目录里面,解压就行。我的VPS存放数据库的路径是 /usr/local/mysql/var。

      上传好网站数据,解压,配置好数据库链接参数就行,网站就能正常连接上了,我本以为这已经是顺利迁移完成了,但后来操作的时候,发现只能读取数据库的内容,不能更改写入任何信息,提示#1036 - Table '* ' is read only (*号为任意表),也就是说表只有只读属性。

      通过SSH,给数据库文件777权限,dedeadmin是我的数据库文件夹

chmod -R 0777 /usr/local/mysql/var/dedeadmin/

      给数据库目录的所属用户和组改为MySQL
    
chown -R mysql:mysql dedeadmin

      但是这样还不能更改数据库,首先,找到mysqladmin所在位置,一般都在mysql/bin下面,我的在/usr/local/mysql/bin 里面,还需要运行以下命令:

./mysqladmin -u root -p flush-tables

      之后输入root账号的密码,马上就好了,没有任何任何提示,然后测试一下,能正常读写,搬家也就顺利完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Could not retrieve transaction read-only status from server" 错误通常是由于在事务中尝试修改只读的数据所导致的。在 MySQL 中,可以使用 `SET TRANSACTION READ ONLY` 命令将事务设置为只读模式,此时事务只能读取数据,不能修改数据。如果在只读事务中尝试修改数据,就会出现这个错误解决这个问题的方法是使用可写事务来修改数据。在事务开始时,可以使用 `SET TRANSACTION READ WRITE` 命令将事务设置为可写模式,这样就可以修改数据了。例如: ```java Connection conn = null; try { conn = DriverManager.getConnection(url, user, password); conn.setAutoCommit(false); Statement stmt = conn.createStatement(); stmt.executeUpdate("SET TRANSACTION READ WRITE"); // 将事务设置为可写模式 stmt.executeUpdate("UPDATE table_name SET column_name = new_value WHERE condition"); // 修改数据 conn.commit(); } catch (SQLException e) { conn.rollback(); } finally { if (conn != null) { try { conn.close(); } catch (SQLException e) { // 处理关闭连接异常 } } } ``` 在这个代码示例中,我们在事务开始时使用 `SET TRANSACTION READ WRITE` 命令将事务设置为可写模式,然后执行修改数据的操作。如果出现异常则回滚事务。在 finally 块中关闭连接,确保连接被正确地释放。 需要注意的是,只有在事务中才需要使用 `SET TRANSACTION READ WRITE` 命令将事务设置为可写模式。如果不使用事务,则默认情况下事务为可写模式,可以直接执行修改数据的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值