初学pdo,总是连接不上mysql数据库,并返回SQLSTATE[HY000] [1049] Unknown database 'test1'。
一开始在网上查了好多,还是找不出错在哪。后来自己分析了一下:
首先返回错误说找不到数据库test1,但是通过MySQL控制台都可以找到这个数据库,说明这个库的确存在,但就是连接不上。
然后在查错过程中发现,把test1库换成mysql库是可以执行的,说明mysql服务是可以连接上的。
然后就在想,是不是wamp的问题,因为刚开始学,对它还不熟悉。自己了解了一下,发现wamp提供一个phpmyadmin页面,在这里可以管理wamp集成的各种数据库。然后发现自己在安装wamp时勾选了两个数据库服务,MariaDB和MySQL。而MySQL的默认端口号是3306,但是MariaDB占用了3306,并且wamp自动把MySQL的端口号改成了3308。到这里终于明白了,在新建pdo对象时localhost未指定端口号,所以默认使用MySQL的默认端口号3306,但实际上创建的test库是在3308端口创建的,所以在3306端口连接不上。把pdo对象的主机名改成localhost:3308后,连接成功。
总结:数据库配置时要注意端口号是否匹配,遇到困难时要先静下心思考一下,很多问题并没有想象中难
PS:若出现SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES),可能是密码输入错误,也有可能是端口号不匹配的问题