PDO在连接数据库时所可能遇到的问题
2016-09-04 23:20
946 查看
这里简单总结一下,在使用PDO一开始,也就是构造函数的时候所可能遇到的问题。
有的同学无论怎么样都会失败,人儿如果说你在mysql:与host上加上一个空格就会成功
尝试下面的代码
检查一下你的mysql,你会惊讶的发现,连接会持续60秒,有人会以为是结果集的问题
为什么呐?
如果用localhost,mysql库就会自动的使用Unix sockets。为了强制的使用TCP/IP你需要指定Ip地址
连接远程数据库的空格问题
<?php $conn = new PDO('mysql:host=123.4.5.6;dbname=test_db;port=3306','username','password'); ?>
有的同学无论怎么样都会失败,人儿如果说你在mysql:与host上加上一个空格就会成功
<?php $conn = new PDO('mysql: host=123.4.5.6;dbname=test_db;port=3306','username','password'); ?>
$pdo=null不能关闭连接
文档上有一点说的不是很准确,在使用PHP 5.4.26,如果说你只是把Pdo实例置为null可能并不会关上连接。尝试下面的代码
$pdo = new PDO('pgsql:host=192.168.137.1;port=5432;dbname=anydb', 'anyuser', 'pw'); sleep(5); $stmt = $pdo->prepare('SELECT * FROM sometable'); $stmt->execute(); $pdo = null; sleep(60); ?>
检查一下你的mysql,你会惊讶的发现,连接会持续60秒,有人会以为是结果集的问题
<?php $pdo = new PDO('pgsql:host=192.168.137.160;port=5432;dbname=platin', 'cappytoi', '1111'); sleep(5); $stmt = $pdo->prepare('SELECT * FROM admin'); $stmt->execute(); $stmt->closeCursor(); $pdo = null; sleep(60); ?> ``` 你会惊讶的发现还是不可以。你需要做的只是把statement置为null即可
构造方法中PDO::ATTR_ERRMODE
如果你在构造方法中使用上述代码,无论如何都会出发一个警告,抛出一个异常,如果你设置PDO::ATTR_ERRMODE 参数,只会在今后的使用中出发警告异常。尽量使用127.0.0.1
如果说你用的不是默认端口,使用localhost就会有问题为什么呐?
如果用localhost,mysql库就会自动的使用Unix sockets。为了强制的使用TCP/IP你需要指定Ip地址
相关文章推荐
- 使用BDC连接MySql可能遇到的问题
- 初学.net遇到的问题:数据库访问连接问题
- gcc编译c语言(访问数据库mysql)时可能遇到的问题
- 使用javabean连接数据库时遇到的问题
- VS2012 使用MySql的API函数连接数据库(成功), 以及使用mysql-connector-c++-1.1.3遇到的问题!
- 使用BDC连接MySql可能遇到的问题
- JDBC连接数据库遇到的问题(小白的错误)
- php pdo连接数据库 解决中文乱码问题
- 遇到的问题--------C#连接数据库的语句带特殊字符时无法解析
- Windows7旗舰版安装PLSQLDeveloper连接数据库遇到:ora-12514 问题和ORA-12545:因目标主机或对象不存在,连接失败”解决方法
- 数据库迁移可能遇到的问题
- 升级到ActiveSync 4.5后“可能”遇到的网络连接问题,以及解决方法 (转)
- 配置遇到的问题:struts2+spring2+hibernate3+c3p0 遇到的数据库连接问题
- 数据库中导出CSV文件与EXCEL文件数据对比可能遇到的问题与解决方法
- 升级到ActiveSync 4.5后“可能”遇到的网络连接问题,以及解决方法
- 转帖:使用BDC连接MySql可能遇到的问题
- 使用JDBC连接虚拟机数据库时遇到的问题
- 连接目标数据库(oracle)时,遇到了1521端口不给开放的问题,绕道从jboss和ejb解决了这个问题。
- 插入数据库可能遇到的问题
- 遇到的问题--------C#连接数据库的语句带特殊字符时无法解析