博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一次PHP代码上线遇到的问题
阅读量:5365 次
发布时间:2019-06-15

本文共 1451 字,大约阅读时间需要 4 分钟。

exception ‘CDbException’ with message ‘The table “pms_goods” for active record class “PmsGoods” cannot be found in the database.’ in /data/work/admin/framework/db/ar/CActiveRecord.php:2385

上线之前,本地测试通过,把测试机代码和Yii framework代码一同下载下载,部署到本地Linux虚拟机中,也正常运行。

而测试服务器就遇到这个错误。

而我坚信 我用的只不过是Yii的 CActiveRecord 而已,代码不会有问题,重写了getDbConnection方法、和 tableName方法:
如下所示:Yii多数据库 使用AR(ActiveRecord) ,
Stackoverflow 上说 把tableName下面的改成双引号,但这并不是问题原因。

public function tableName(){
return 'pms_goods';}public function getDbConnection(){
return Yii::app()->pmsdb;}//调用方式,这还能错? PmsGoods::model()->findAll($criteria);

经过stackoverflow 和 Google一番之后依旧没有找到原因。

花了两天时间艰难的调试,终于找到原因。

过程:
通过vi 直接在测试服务器上改代码,第二天我打算换种SQL调用写法,当我改成:

Yii::app()->pmsdb->CreateCommand($sql)->queryAll();

报错的信息不一样了,

exception ‘CDbException’ with message ‘CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2002] Connection timed out’ in /data/work/admin/framework/db/CDbConnection.php:399

瞬间明白什么问题了,服务器是连不上这个数据库啊!!!!!

SO,在SecureCRT上直接 mysql -h xxx.com -u xxx -p xxx
连接一下看看,果然连不上。

总结:

一条错误信息也许指出的问题跟明确,但也可能是误导,如果有其他方式可以做,虽然这样会证明自己怀疑了当前写法,但也许会有新的发现找到其他的问题。这个例子的关键就是:不是数据库里没有这张表,而是数据库根本就连不上。

Yii这个框架,使用简单,但说实话,出了问题真的很难调试。

ps:测试人员 改配置文件的时候,文件里多了 i (囧),以及,测试机器的php,他的设置没有错误输出,这两点让我昨天耗了一天。


2016.09.27

后面跟运维反应了一下,是因为阿里云数据库迁移,导致DNS的问题。
具体的我不是很懂,重新配置了一下就可以访问了。

总结:自己的代码能跑,到别的地方就不能跑,一定是因为环境的问题。首先要想到的就是数据库,之类的网络是不是不能访问,应用的权限是不是没配置, JS是不是跨域之类的。

 

转载于:https://www.cnblogs.com/slankka/p/9158522.html

你可能感兴趣的文章
git回退版本
查看>>
mysql 1093错误
查看>>
io流2
查看>>
测试作业
查看>>
SQLite与SQL差异
查看>>
什么是路由器?
查看>>
SQL Server 性能优化之——系统化方法提高性能
查看>>
单源最路径算法总结
查看>>
laragon 使用(php版本升级切换)
查看>>
spring AOP @Around @Before @After 区别
查看>>
模板配置
查看>>
002 --品优购的系统架构
查看>>
2019春期末总结
查看>>
CURL常见问题
查看>>
Jdbc进阶(三)
查看>>
python-docx
查看>>
接口测试-为什么做接口测试
查看>>
深度学习入门|第六章与学习相关的技巧
查看>>
C# 动态编译创建Form,遇到 DragDrop registration did not succeed. 异常
查看>>
快速幂取模
查看>>