从 S3 加载数据错误地在代码点火器查询方法中返回错误



我在 AWS 上托管了一个代码点火器应用程序,该应用程序中的一个方法正在运行

"LOAD DATA FROM S3 'S3 path' ... "

这本质上与加载数据 INFILE 查询相同,但在 AWS Aurora 中进行了自定义,以从 S3 而不是本地卷读取文件。查询按预期执行,但 CI 的

$this->db->error()

返回一个数组,指示发生了错误。该数组的内容是

[0, '']

起初我以为这是一个超时,但在减小要导入的文件并确保导入记录的大小后,我开始怀疑 CI 的数据库驱动程序不是为处理该查询的结果而设计的。 查询并没有真正返回任何数据,我想这会混淆 CI。

有什么好方法可以在不更改框架"源代码"的情况下绕过 CI 中的这种行为?

提前感谢!

我意识到,由于名为MySQLi的数据库驱动程序类将以下内容返回给模型中$this->db实例(请参阅errnoerror属性(

[_mysqli:protected] => mysqli Object
(
[affected_rows] => 1
[client_info] => mysqlnd 5.0.12-dev - 20150407 - $Id: b382534eeb34d9ed79345235b8bae2234b287afcs21ad4e $
[client_version] => 50012
[connect_errno] => 0
[connect_error] => 
[errno] => 0
[error] => 
[error_list] => Array
(
)

我永远不会得到有关错误的更多信息,然后mysql_errnomysql_error返回给驱动程序。 因此,如果像这样错误地检查查询

if($this->db->error())
{
return false;
}

我可以简单地做到这一点

if(is_array($this->db->error()) && 0 !== $this->db->error()[0])
{
return false;
}

错误以数组格式返回,或从$this->db->error()返回 false,因此检查错误代码是否为零非常简单。如果为零,我们可以确定查询按计划执行并且导入已完成。 我们从 $this->db->error(( 获得数组而不是 false 的原因是没有从 CI 期望的查询返回任何结果。

所以......毕竟是一个简单的解决方案。

相关内容

  • 没有找到相关文章

最新更新