I too was trying to get the information from errorInfo()
at the database handle level, but I ended up getting the information from the statement level with PDOStatement::errorInfo()
Per PHP web site:
PDO::errorInfo() only retrieves error information for operations performed directly on the database handle. If you create a PDOStatement object through PDO::prepare() or PDO::query() and invoke an error on the statement handle, PDO::errorInfo() will not reflect the error from the statement handle. You must call PDOStatement::errorInfo() to return the error information for an operation performed on a particular statement handle.