【问题标题】:tried to bind parameter number 2101. sql server supports a maximum of 2100 parameters尝试绑定参数号2101。sql server最多支持2100个参数
【发布时间】:2017-11-20 16:59:04
【问题描述】:

我正在尝试通过 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();

非常感谢

【问题讨论】:

    标签: php sql-server phinx


    【解决方案1】:

    您可以使用 php 轻松地对数据进行分块。如果您愿意,您还可以通过检查数据大小来确定合适的块大小。

    $chunk_size = floor(2100 / count($rows[0]));
    foreach (array_chunk($rows, $chunk_size) as $data_chunk ) {
      $X->insert($data_chunk)->saveData();
    }
    

    【讨论】:

      【解决方案2】:

      显然您尝试绑定太多参数,解决方案是根据您的数据分批进行迁移,比如说 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 = [];
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-13
        • 2021-04-22
        • 2021-04-24
        • 1970-01-01
        • 1970-01-01
        • 2022-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多