Welcome Guest, Not a member yet? Register   Sign In
Catch database exception
#1
Question 

Hi,

I have some problems with catching a database exception. On the development, everything works as I expected but not on the production.

My code looks like below:

PHP Code:
        try {

            $orderStatus = new OrderStatus;

            $orderStatus->insert(new OrderStatusEntity([
                'order_id' => $orderId,
                'status_id' => $statusId
            
]));

        }
        catch (\mysqli_sql_exception $e) {

            if ($e->getCode() === 1062)
            {
                log_message('warning''Duplicate status ({status}) for order {id}', [
                    'status' => $statusId,
                    'id' => $orderId
                
]);
            }

        

On the development environment in the logs file, I have only `Duplicate status...` - as I want

On the production environment in the logs file, I have a raw exception

PHP Code:
ERROR 2020-10-13 20:25:22 --> mysqli_sql_exceptionDuplicate entry '441-2' for key 'order_id_status_id' in /var/www/mrsystem/vendor/codeigniter4/framework/system/Database/MySQLi/Connection.php:331
Stack trace
:
#0 /var/www/mrsystem/vendor/codeigniter4/framework/system/Database/MySQLi/Connection.php(331): mysqli->query('INSERT INTO `or...')
#1 /var/www/mrsystem/vendor/codeigniter4/framework/system/Database/BaseConnection.php(741): CodeIgniter\Database\MySQLi\Connection->execute('INSERT INTO `or...')
#2 /var/www/mrsystem/vendor/codeigniter4/framework/system/Database/BaseConnection.php(669): CodeIgniter\Database\BaseConnection->simpleQuery('INSERT INTO `or...')
#3 /var/www/mrsystem/vendor/codeigniter4/framework/system/Database/BaseBuilder.php(2249): CodeIgniter\Database\BaseConnection->query('INSERT INTO `or...', Array, false)
#4 /var/www/mrsystem/vendor/codeigniter4/framework/system/Model.php(755): CodeIgniter\Database\BaseBuilder->insert()
#5 /var/www/mrsystem/bundles/Ecommerce/Order/Order.php(272): CodeIgniter\Model->insert(Array) 

If I changed in the Database config variable DBDebug to TRUE then I have a raw exception and logged a warning

PHP Code:
ERROR 2020-10-13 20:25:22 --> mysqli_sql_exceptionDuplicate entry '441-2' for key 'order_id_status_id' in /var/www/mrsystem/vendor/codeigniter4/framework/system/Database/MySQLi/Connection.php:331
Stack trace
:
#0 /var/www/mrsystem/vendor/codeigniter4/framework/system/Database/MySQLi/Connection.php(331): mysqli->query('INSERT INTO `or...')
#1 /var/www/mrsystem/vendor/codeigniter4/framework/system/Database/BaseConnection.php(741): CodeIgniter\Database\MySQLi\Connection->execute('INSERT INTO `or...')
#2 /var/www/mrsystem/vendor/codeigniter4/framework/system/Database/BaseConnection.php(669): CodeIgniter\Database\BaseConnection->simpleQuery('INSERT INTO `or...')
#3 /var/www/mrsystem/vendor/codeigniter4/framework/system/Database/BaseBuilder.php(2249): CodeIgniter\Database\BaseConnection->query('INSERT INTO `or...', Array, false)
#4 /var/www/mrsystem/vendor/codeigniter4/framework/system/Model.php(755): CodeIgniter\Database\BaseBuilder->insert()
#5 /var/www/mrsystem/bundles/Ecommerce/Order/Order.php(272): CodeIgniter\Model->insert(Array)
(...)

WARNING 2020-10-13 20:38:20 --> Duplicate status (2) for order 441 

Can someone tell me what I am doing wrong? How to on the production environment get an only logged warning?
Reply


Messages In This Thread
Catch database exception - by Michal_PB1 - 10-13-2020, 11:44 AM
RE: Catch database exception - by InsiteFX - 10-13-2020, 02:46 PM
RE: Catch database exception - by Michal_PB1 - 10-14-2020, 07:25 AM
RE: Catch database exception - by InsiteFX - 10-14-2020, 11:33 PM
RE: Catch database exception - by Michal_PB1 - 11-30-2020, 01:13 PM
RE: Catch database exception - by InsiteFX - 11-30-2020, 03:07 PM
RE: Catch database exception - by Michal_PB1 - 11-30-2020, 03:19 PM



Theme © iAndrew 2016 - Forum software by © MyBB