使用 PHP 5.5.9 和 PDO_OCI,Oracle 12.1。我收到一条OCI_SUCCESS_WITH_INFO消息,指出密码即将过期。但是,由于它被 PDO 作为异常抛出,因此未建立连接。当异常只是警告或信息性消息时,如何忽略它?
以下是错误消息:
数据库连接失败: SQLSTATE[HY000]: OCISessionBegin: OCI_SUCCESS_WITH_INFO:ORA-28002:密码将在 41 内过期 日
其次:
致命错误:在第 257 行的/htdocs/ciatools_dev/promise/Classes/PromiseVars 中的非对象上调用成员函数 setAttribute(.php
以及生成它的代码:
try {
$this->dbconn = new PDO("oci:dbname=$dbwc",'username', 'password');
} catch (PDOException $e) {
echo 'Database Connection failed: ' . $e->getMessage();
}
$this->dbconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
如果这是一个测试系统,请尝试更改用户的密码以查看是否解决了错误消息。 此线程包含更多详细信息
alter user <your user> identified by password;
您还可以更改该用户的配置文件,使其不会过期,这在开发中是可以接受的,但在生产中是安全问题。
--get the the profile
SELECT profile FROM dba_users WHERE username = <'Your user'>;
--change the profile
ALTER PROFILE <this user's profile> LIMIT PASSWORD_LIFE_TIME UNLIMITED;