[Exception]Cannot set the value of read-only property 'outputFile'

本文分享了将Android Studio从2.2.3版本升级到3.0版本后遇到的一个项目错误及其解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚刚把AS从 2.2.3 升级到 3.0 以后,原来的项目突然报了一个错误:
这里写图片描述

经过百度,终于找到了解决方法,就是:
这里写图片描述

附上解决方法的原文链接:解决方法的原文

### 解决 MySQL 主从库同步时因 `--read-only` 导致的错误 #### 一、分析问题原因 在主从复制环境中,如果从库设置了全局只读模式(即启用了 `read_only=ON`),可能会引发某些特定场景下的写入失败。例如,在处理临时表或内部事务时,MySQL 可能会尝试执行一些隐式的写操作,而这些操作会被阻止从而抛出错误 [1290] [HY000][^1]。 为了克服此限制,需采取措施允许必要的写权限给系统级进程而不破坏整体的安全策略。 --- #### 二、解决方案 ##### 方法 1:调整 `super_read_only` 参数 默认情况下,启用 `read_only` 后仍允许具有 SUPER 特权的用户进行修改;但如果也激活了更严格的 `super_read_only` 则连超级管理员也无法直接改动数据对象除非特别授权例外列表内的指令集[^3]。 可以在 Linux 系统上的 `/etc/my.cnf` 中添加如下配置项: ```ini [mysqld] super_read_only = OFF ``` 随后重启服务让变动生效即可缓解大部分常规冲突现象。 ##### 方法 2:排除特殊表免受 readonly 控制 有时仅需针对少数几个特殊的存储引擎类型放松约束便可解决问题比如 MEMORY 表型态等不会持久化至硬盘所以风险较低可考虑将其列入白名单之外不受 global level 的 ReadOnly 影响范围之内: 通过命令行动态设置忽略规则: ```sql SET GLOBAL read_only = ON; SET SESSION sql_log_bin = 0; -- Disable binary logging temporarily. CREATE TEMPORARY TABLE temp_table (...); SET SESSION sql_log_bin = 1; -- Re-enable binary logging after creation. ``` 注意这里关闭 binlog 是为了避免不必要的变更传播回 Master 引起循环依赖等问题[^4]。 ##### 方法 3:修正 GTID 配置不当引起的连锁反应 由于 Global Transaction Identifiers(GTIDs)机制的存在可能导致额外复杂度增加特别是当你手动干预过 gtid_purged 值之后容易造成不一致状态进而触发类似的访问控制违例情形。因此建议按照官方文档指引先清理旧有残留再重新建立连接关系: 具体步骤包括但不限于: - Stop all writes to both masters and slaves. - Reset GTIDS using RESET MASTER command on each instance involved. - Recreate dump files ensuring they contain correct PURGE statements at top. 最后再次确认新构建好的拓扑结构里各成员间保持一致性无误后方可正式投入使用生产环境当中去[^5]. --- ### 示例代码片段展示如何验证当前状态及切换配置 下面给出一段 Python 脚本用来检查现有实例的状态并作出相应的调整动作作为参考实现之一 : ```python import pymysql.cursors def check_and_adjust_replica_status(host, username, passwd): try: conn = pymysql.connect( host=host, user=username, password=passwd, cursorclass=pymysql.cursors.DictCursor ) with conn.cursor() as cur: # Check current settings of read_only & super_read_only cur.execute("SELECT @@global.read_only AS ro, @@global.super_read_only AS sro;") res = cur.fetchone() if bool(res['sro']): print(f"Super Read Only mode detected ({res}). Adjusting...") # Attempt modification via session context first cur.execute("SET GLOBAL super_read_only = OFF;") print("Successfully disabled Super Read Only.") except Exception as e: raise RuntimeError(f"Failed checking replica status due to {e}") finally: conn.close() if __name__ == "__main__": target_hosts = ['linux_slave'] credentials = {'username': 'replicator', 'passwd': 'secret'} for hst in target_hosts: check_and_adjust_replica_status(hst, **credentials) ``` --- ### 总结说明 以上介绍了几种应对由 `read_only` 设置所引起的相关错误的有效途径,并提供了实际应用中的脚本例子帮助理解概念落地实践方法论 。根据不同业务需求可以选择最适合自己的方案组合起来达成目标效果最佳平衡点 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值