Welcome Guest, Not a member yet? Register   Sign In
Problem using Model $builder->ignore()->insertBatch()
#1

Hello, do you know if can use $builder->ignore() with $builder->insertBatch() because Im tring this $builder->ignore(true)->insertBatch($data) but it seems doesn't work, when try to insert duplicated entry doesn't ignore and throw error:
Duplicate entry '25-2022-07-05' for key 'id_call'


at SYSTEMPATH/Database/MySQLi/Connection.php:292

Backtrace:
  1    SYSTEMPATH/Database/MySQLi/Connection.php:292
       mysqli()->query()

  2    SYSTEMPATH/Database/BaseConnection.php:670
       CodeIgniter\Database\MySQLi\Connection()->execute()

  3    SYSTEMPATH/Database/BaseConnection.php:598
       CodeIgniter\Database\BaseConnection()->simpleQuery()

  4    SYSTEMPATH/Database/BaseBuilder.php:1648
       CodeIgniter\Database\BaseConnection()->query()

  5    SYSTEMPATH/Model.php:272
       CodeIgniter\Database\BaseBuilder()->insertBatch()

  6    SYSTEMPATH/BaseModel.php:814
       CodeIgniter\Model()->doInsertBatch()

  7    APPPATH/Controllers/Cron.php:315
       CodeIgniter\BaseModel()->insertBatch()

  8    SYSTEMPATH/CodeIgniter.php:832
       App\Controllers\Cron()->importDialogaAudioCalls()

  9    SYSTEMPATH/CodeIgniter.php:419
       CodeIgniter\CodeIgniter()->runController()

 10    SYSTEMPATH/CodeIgniter.php:326
       CodeIgniter\CodeIgniter()->handleRequest()

 11    FCPATH/index.php:37
       CodeIgniter\CodeIgniter()->run()

Thanks for your help,
Reply
#2

1. For CLI use Spark commands.
2. You call through the model. Can you run a query using a builder without a model?
Reply
#3

Hello iRedds,

I executed using builder without model:

$db = \Config\Database::connect();
$db->table('my_table')->ignore(true)->insertBatch($data);

However, I get the same error:

Duplicate entry '25-2022-07-05' for key 'id_call'

at SYSTEMPATH/Database/MySQLi/Connection.php:292

Backtrace:
1 SYSTEMPATH/Database/MySQLi/Connection.php:292
mysqli()->query()

2 SYSTEMPATH/Database/BaseConnection.php:670
CodeIgniter\Database\MySQLi\Connection()->execute()

3 SYSTEMPATH/Database/BaseConnection.php:598
CodeIgniter\Database\BaseConnection()->simpleQuery()

4 SYSTEMPATH/Database/BaseBuilder.php:1648
CodeIgniter\Database\BaseConnection()->query()

5 APPPATH/Controllers/Cron.php:312
CodeIgniter\Database\BaseBuilder()->insertBatch()

6 SYSTEMPATH/CodeIgniter.php:832
App\Controllers\Cron()->importDialogaAudioCalls()

7 SYSTEMPATH/CodeIgniter.php:419
CodeIgniter\CodeIgniter()->runController()

8 SYSTEMPATH/CodeIgniter.php:326
CodeIgniter\CodeIgniter()->handleRequest()

9 FCPATH/index.php:37
CodeIgniter\CodeIgniter()->run()


Thank you for your reply,
Reply
#4

Can not reproduce.
There is no special magic here. When using the ignore() method, the IGNORE keyword is added (for MySQL).
Reply




Theme © iAndrew 2016 - Forum software by © MyBB