PDO OCI:成功,但信息异常


PDO OCI: Success with Info exception

使用 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;