我试图通过phinx运行一些迁移到MSSQL,当我执行查询时,得到以下消息:“尝试绑定参数编号2101.sql server最多支持2100个参数”
我已经找了3天的解决方案了,有人知道吗?问题是什么,我怎么解决?可能是与我的php迁移文件相关的问题吗?或者是关于我的phinx配置?
这是我的迁移文件的一部分:
$rows =
[
[
'COLUMNA' => 111,
'COLUMNB' => 101,
'COLUMNC' => '-1',
'COLUMND' => '',
'COLUMNE' => 'ERROR',
'COLUMNF' => NULL,
'COLUMNG' => 1,
'COLUMNH' =>0,
'COLUMNI' => 10002,
'COLUMNJ' => '2017-11-12 00:00:00.000',
'COLUMNK' => -1,
'COLUMNM' => -1
],
[ 'COLUMNA' => 112,
'COLUMNB' => 101,
'COLUMNC' => '-1',
'COLUMND' => '',
'COLUMNE' => 'ERROR',
'COLUMNF' => NULL,
'COLUMNG' => 1,
'COLUMNH' =>0,
'COLUMNI' => 10002,
'COLUMNJ' => '2017-11-12 00:00:00.000',
'COLUMNK' => -1,
'COLUMNM' => -1
],
]
$X = $this->table('MYTABLE');
$X->insert($rows);
$X->saveData();非常感谢
发布于 2020-10-02 16:07:44
您可以轻松地将数据分块到php。如果需要,还可以通过检查数据大小来确定一个好的块大小。
$chunk_size = floor(2100 / count($rows[0]));
foreach (array_chunk($rows, $chunk_size) as $data_chunk ) {
$X->insert($data_chunk)->saveData();
}发布于 2017-11-20 17:23:03
显然,您试图绑定太多的参数,解决方案是按批进行迁移,比如根据您的数据进行1000行~ 12000参数的迁移。
$X = $this->table('MYTABLE');
$data = [];
for ($i = 0; $i < count($rows); i++)
{
$data[] = $rows[i];
if(i % 1000 === 0)
{
$X->insert($data);
$X->saveData();
$data = [];
}
}https://stackoverflow.com/questions/47397239
复制相似问题