mysql中Table is read only的解决

一客户的mysql数据库600多M.从windows换成linux.导出再导入太麻烦了.于是直接复制物理文件到linux.先创建好linux下面的mysql数据库.再把文件wget过来覆盖掉之后.问题出现了,
在mysql中,Select之类的都正常,但在phpmyadmin优化数据库的时候中提示:Table 'jieqi_xxxx' is read only,给数据库目录的所属用户和组改为mysql,并加上777的权限,还是一样提示.程序中使用root连接,也是一样的提示....百般SM加鞭策无果.最后想到用myisamchk来检查一下,也提示Table is read only.于是满世界找答案啊...终于功夫不负哥,还真找到了.以下是原文:

I just encountered a similar problem on one of my production servers
this morning. (I'm still investigating the cause.) After doing a
quick bit of Google-searching, this solved my problem:

mysqladmin -u <username> -p flush-tables

By the way: All directories in /var/lib/mysql should have 700
permissions (owned my the mysql user) and everything within those
directories should be 660 (owned by the mysql user and mysql group).


cd /usr/local/mysql/bin


执行如下mysqladmin

./mysqladmin -u <username> -p flush-tables


运行flush-tables后,read only问题解决.

### PyCharm 中解决 “This table is read-only. Changes cannot be applied” 的方法 当在 PyCharm 数据库工具中尝试修改表结构时,如果收到错误提示“This table is read-only. Changes cannot be applied”,这通常是因为数据库连接配置或权限设置存在问题。以下是可能的原因以及解决方案: #### 1. **检查数据库用户的权限** 确保当前使用的 MySQL 用户具有足够的权限来执行 `ALTER TABLE` 和其他 DDL 操作。可以通过以下 SQL 查询验证用户权限: ```sql SHOW GRANTS FOR 'your_user'@'localhost'; ``` 如果没有相应的权限,可以使用管理员账户授予必要的权限: ```sql GRANT ALTER, CREATE, DROP ON your_database.* TO 'your_user'@'localhost'; FLUSH PRIVILEGES; ``` 此操作会赋予指定用户对目标数据库的 `ALTER`, `CREATE`, 和 `DROP` 权限[^1]。 #### 2. **确认数据源是否为只读模式** 在 PyCharm 中打开数据库的数据源设置界面,导航到 `Database Tool Window -> Data Source Properties`,并检查是否存在标记为“Read Only”的选项。如果有,请取消勾选该选项以允许写入操作[^2]。 #### 3. **刷新元数据缓存** 有时 PyCharm 可能因为内部缓存而导致表显示为只读状态。在这种情况下,可以选择手动刷新元数据缓存: - 打开 Database 工具窗口。 - 使用右键菜单中的 `Invalidate Caches and Restart` 功能重新加载项目资源。 - 或者通过点击顶部工具栏上的同步按钮(两个循环箭头图标),强制更新本地缓存与实际数据库的一致性[^3]。 #### 4. **调整 JDBC 连接字符串参数** 某些时候,默认的 JDBC URL 配置可能会导致表被识别成不可编辑的状态。可以在 PyCharm 的数据源配置页面里自定义 JDBC URL 参数,加入如下内容以显式禁用只读标志: ``` ?sessionVariables=sql_mode='NO_AUTO_VALUE_ON_ZERO',default_storage_engine=INNODB&useSSL=false&serverTimezone=UTC&autoReconnect=true&rewriteBatchedStatements=true ``` #### 5. **切换存储引擎类型** 部分特殊场景下,特定类型的存储引擎可能导致表处于只读状态。例如 MyISAM 表不支持事务处理功能,而 InnoDB 则完全兼容 ACID 特性。因此建议将受影响的表转换至更通用的 InnoDB 存储引擎上运行: ```sql ALTER TABLE your_table ENGINE=InnoDB; ``` 以上措施应能够有效缓解乃至彻底消除 PyCharm 报告出来的关于表只读的相关警告信息。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值