首页 > 数据库 >[PHP]PDO的dsn对mysql的连接影响

[PHP]PDO的dsn对mysql的连接影响

时间:2023-08-01 21:57:30浏览次数:44  
标签:PDO socket dsn host mysql 连接 localhost

dsn的host字段中,'localhost'是一个影响其连接协议的值,当host取值'localhost',PDO会坚持使用unixsocket的方式去连接数据库:

'mysql:host=localhost;dbname=mydb'

以上配置,PDO会寻找php.ini中的pdo_mysql.default_socket值,尝试运用此路径通过unixsocket来连接mysql,如果此配置值不存在或者路径不可用,PDO就会抛出异常:

Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory in xxx

以上错误信息是根据pdo_mysql.default_socket值的实际情况描述的,例如,如果路径因权限原因无法访问,则抛出:

Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] Permission denied in xxx

 

也可以通过dsn的unix_socket字段来指定socket文件路径,意义等同于pdo_mysql.default_socket

'mysql:unix_socket=/var/lib/mysql/mysql.sock;dbname=mydb'

运用这种方式就不需要显式指定host字段了,PDO总是在使用unixsocket连接方式时把host设置为localhost,这是无法通过显式指定host改变的:

'mysql:host=my_host;unix_socket=/var/lib/mysql/mysql.sock;dbname=mydb'

以上配置,最终host还是localhost,my_host不会被预期设置;

所以,如果你一定需要用TCP的方式连接mysql,务必不能把host=localhost; 成功连接上mysql后你可以调用PDO实例的getAttribute(PDO::ATTR_CONNECTION_STATUS)方法来返回连接方式;

标签:PDO,socket,dsn,host,mysql,连接,localhost
From: https://www.cnblogs.com/yiyide266/p/17599191.html

相关文章

  • MySQL字符串截取之substring_index
    substring_index(str,delim,count)str:要处理的字符串delim:分隔符count:计数 例子:str=www.wikibt.comsubstring_index(str,'.',1)结果是:wwwsubstring_index(str,'.',2)结果是:www.wikibt也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容相......
  • MySQL 日期计算中的计算天数的方法(mysql日期计算天数)
    MySQL日期计算中的计算天数的方法MySQL作为一款高性能的数据库,可以支持日期计算功能,其中有两个函数可以计算出两个日期之间相差多少天数,那就是DATEDIFF和DATE_SUB函数。其中DATEDIFF函数是MySQL内置支持的函数,它可以计算两个日期之间的天数,DATE_SUB则是在DATEDIFF函数......
  • MySQL 日期计算中的计算天数的方法(mysql日期计算天数)
    MySQL日期计算中的计算天数的方法MySQL作为一款高性能的数据库,可以支持日期计算功能,其中有两个函数可以计算出两个日期之间相差多少天数,那就是DATEDIFF和DATE_SUB函数。其中DATEDIFF函数是MySQL内置支持的函数,它可以计算两个日期之间的天数,DATE_SUB则是在DATEDIFF函数......
  • mysql if 空字符串(如何使用mysql中的if函数处理空字符串)
    ysql中的if函数处理空字符串?ysql中,if函数可以用来实现条件判断。当我们需要处理空字符串时,可以使用if函数来判断字符串是否为空,然后根据判断结果进行相应的处理。if函数的语法如下:if(expr1,expr2,expr3)其中,expr1是条件表达式,如果该表达式的值为真,则返回expr2的值,否则返回expr3的值......
  • mysqlfrm工具使用及基于.frm和.ibd文件的数据恢复和.ibd迁移
    问题概述可以在数据库发生部分文件损坏,又没有相关备份时,利用mysqlfrm工具,读取数据库中表的.frm文件提取建表语句,结合.ibd文件做数据恢复。一、相关概念1、mysqlfrm工具mysqlfrm是一个恢复性质的工具,可以用来读取.frm文件并从该文件中找到表定义,生成ddl语句,生成的ddl语句多用于在另......
  • MySQL 连接语句优化技巧的示例和代码
    当涉及到实际案例时,以下是一些可以帮助实现快速查找的MySQL连接语句优化技巧的示例和代码:1.使用索引:CREATEINDEXidx_nameONyour_table(name);上述代码在名为your_table的表的name列上创建了一个索引。这将加快对该列的查询速度。2.编写有效的查询语句:SELECT*......
  • MySQL 排序一
    前言   排序是数据库中的一个基本功能,MySQL也不例外。用户通过Orderby语句即能达到将指定的结果集排序的目的,其实不仅仅是Orderby语句,Groupby语句,Distinct语句都会隐含使用排序。本文首先会简单介绍SQL如何利用索引避免排序代价,然后会介绍MySQL实现排序的内部原理,并介绍......
  • PHPMySQL防注入 如何使用安全的函数保护数据库
    PHPMySQL防注入如何使用安全的函数保护数据库在进行PHP编程开发时,安全性一直是开发人员必须注意的问题,其中最重要的是防止SQL注入攻击。SQL注入攻击是指通过输入恶意代码来攻击数据库的一种方式,攻击者通过输入SQL语句来绕过程序的安全机制,达到控制和操作数据库的目的。为了避免......
  • MySQL随笔【欢迎大家批评指正】
    根据父类id,查找所有子类id:设计初期:记录每条记录的顶级IDMySQL7.5:临时表DELIMITER//CREATEPROCEDUREFindAllChildCategories(INparentCategoryIdINT)BEGINDROPTABLEIFEXISTStemp_categories;CREATETABLEtemp_categories(idINT);INSERTINTOt......
  • PHP+JSP+MYSQL+APACHE+RESIN虚拟主机配置
     在LINUX平台下全部配置完毕并完全整和通过测试成功需要软件如下resin:http://www.caucho.com/jdk:http://java.sun.com/apache:http://www.apache.orgmysql:http://www.mysql.comphp:http://www.php.netjdbc:http://mmmysql.sourceforge.net/本人所用的软件版本如......