一次PHP代码上线遇到的问题
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是不是跨域之类的。
一次PHP代码上线遇到的问题的更多相关文章
- Jenkins与网站代码上线解决方案
1.1 前言 Jenkins是一个用Java编写的开源的持续集成工具.在与Oracle发生争执后,项目从Hudson项目独立. Jenkins提供了软件开发的持续集成服务.它运行在Servlet容器中 ...
- Jenkins与网站代码上线解决方案【转】
转自 Jenkins与网站代码上线解决方案 - 惨绿少年 https://www.nmtui.com/clsn/lx524.html 1.1 前言 Jenkins是一个用Java编写的开源的持续集成工 ...
- Linux实战教学笔记41:企业级SVN版本管理与大型代码上线方案
第1章 SVN服务实战应用指南 1.1 SVN介绍 1.1.1 什么是SVN(Subversion)? Svn(subversion)是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN ...
- 企业SVN版本管理与代码上线方案
1.SVN服务实战 1) 什么是SVN(Subversion)? Svn(subversion)是近年来崛起的非常优秀的版本管理工具,与CVS管理工具一样,SVN是一个跨平台的开源的版本控制系统.Sv ...
- java项目代码上线
java项目代码上线 1:java项目代码上线架构图 ip地址及主机名规划 10.0.0.11 deploy 10.0.0.12 tomcat-web01 10.0.0.13 git.oldboy ...
- jenkin自动化代码上线
介绍 Jenkins是一款开源自动化服务器,旨在自动化连续集成和交付软件所涉及的重复技术任务. Jenkins是基于Java的,可以从Ubuntu软件包安装,也可以通过下载和运行其Web应用程序ARc ...
- SVN版本管理与大型代码上线方案(一)
SVN版本管理与大型代码上线方案(一) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打开百度网盘手机App,操 ...
- shell脚本:备份数据库、代码上线
备份MySQL数据库场景:一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求:1)每天备份一次,需要备份所有的库2)把备份数据存放到/data/backup/下3 ...
- 自动化运维:网站svn代码上线更新(flask+saltstack)
阶段性总结: 跌跌撞撞的用了一周左右的时间做完了网站自动升级功能,中间遇到了很多的问题,也学到了很多,在此做一个总结. 1.整体架构: 后台:nginx+uwsgi #nginx提供w ...
随机推荐
- 视频监控安防平台-GB28181-2016版-移动位置订阅
视频监控安防平台-GB28181-2016版-移动位置订阅 郑重声明: 本位来自 CSDN博主「沉睡的思绪」,查看原文,请点击下面链接,原文链接:https://blog.csdn.net/songx ...
- 关于WinForm TreeView的分享~
最近在写个测试demo的时候使用到WinForm TreeView,已经好久没接触了,有些生疏,所以还是记录一下遇到的一些问题. 1.如果动态绑定TreeView,这个功能一般会在数据量不确定,需要去 ...
- Dubbo学习系列之十三(Mycat数据库代理)
软件界有只猫,不用我说,各位看官肯定知道是哪只,那就是大名鼎鼎的Tomcat,现在又来了一只猫,据说是位东方萌妹子,暂且认作Tom猫的表妹,本来叫OpencloudDB,后又改名为Mycat,或许Ca ...
- JAVA多线程线程同步问题
线程同步 在多线程的编程环境下,可能看着没有问题的代码在运行几千上万或者更多次后,出现了一些看着很奇怪的问题,出现这样的问题的原因就是可能会有两个或者更多个线程进入了同一块业务处理代码中导致了判断失效 ...
- .NET Core 3.0 可卸载程序集原理简析
因为最近在群里被问到如何理解 .NET Core 3.0 可卸载程序集,所以就写了这篇简单的分析. 因为时间实在很少,这篇文章只简单的罗列了相关的代码,请配合官方说明文档理解. 另外,书籍<.N ...
- 夯实Java基础系列21:Java8新特性终极指南
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- Centos6 日常使用小结
网络配置目录 1./etc/sysconfig/network-script/ifcfg-eth0 2.netstat -rn Kernel IP routing table Destination ...
- js常用Matn函数的操练
Math.PI console.log(Math.PI); 随机数以及向下取整 这是一个能实现从a-b之间随机打印一个整数 function rand_s(a, b) { var x = a + (b ...
- Python3 学习笔记之 类型/运算符
类型/运算符: 类型: 整数 字符串 浮点数 布尔类型 类型转换: 检查类型: 算术操作符: 逻辑操作符: 优先级:
- 快学Scala 第十六课 (shell调用,正则表达式,正则表达式组,stripMargin妙用)
shell调用:(管道符前加#号,执行shell用!) import sys.process._ "ls -al" #| "grep x" ! 正则表达式:(r ...