1209 - The MySQL server is running with the--read-only (二)

近日新上线的一个项目又遇到了数据库不能写入的情况。运维人员反映数据库不能写入,错误如下:

1209 - The MySQL server is running with the--read-only option so it cannot  execute this statement

引起这个问题的根本原因是数据库的read_only参数被打开,导致普通用户无法写入。检查了主库上的read_only参数,是关闭的,从库上的read_only是打开的。由此可以猜测是因为程序将写入操作连到了从库上。



运维人员检查了数据源的配置,发现写库和读库的配置的都是正确的。而且运维人员还反馈了一个现象,并不是所有的写操作都有问题,只有一个特定的操作会出现此问题。由此更加肯定不是数据库的问题了。但开发人员一口咬定是数据库权限给错了,不是程序的问题。直觉告诉我,跟这些人争论是没有用的。只有证明我们是对的,才能说服他们。



于是让运维人员将读库数据源指向实际的写库,如果应用正常,则证明是应用本身的问题。事实证明,按上述的方式修改后,应用运行正常,没有出现数据不能写入的情况。此时开发人员意识到是自己程序本身的问题,回去排查问题的原因了。



也许有人会问,这么低级的错误,怎么能上到生产环境上呢?难道没有经过测试吗?测试肯定是有的,并且也验证通过了。只是在测试环境中为了调试方便,他们硬编码了数据库的连接,并没有用到连接池。而生产环境中用了连接池,但他们又没有经过测试,所以便引发了上述问题。


没有规矩不成方圆,尤其是涉及到跨部门协作的工作,更应该严格按照规矩来办,不能图一时之快,而留下无穷后患。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值