21 lines
1.1 KiB
SQL
21 lines
1.1 KiB
SQL
-- رفع باگ گمشدن اسناد ریالی پرگار
|
|||
|
|
-- ستون pargar_sync_logs.amount با float() ساخته شده بود = DOUBLE(8,2) با سقف ۹۹۹٬۹۹۹٫۹۹
|
||
|
|
-- هر سند واریز/برداشت ریالی بزرگتر از این سقف در insert خطا میداد و سند اصلاً ساخته نمیشد،
|
||
|
|
-- پس پرگار واریز مشتری را نمیدید و در تطبیق مانده، موجودی ریالی کیف صفر میشد.
|
||
|
|
-- idempotent: چند بار قابل اجرا
|
||
|
|
|
||
|
|
SET @db = DATABASE();
|
||
|
|
|
||
|
|
SET @sql = IF(
|
||
|
|
(SELECT COUNT(*) FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'pargar_sync_logs'
|
||
|
|
AND COLUMN_NAME = 'amount' AND UPPER(COLUMN_TYPE) <> 'DOUBLE') = 1,
|
||
|
|
'ALTER TABLE `pargar_sync_logs` MODIFY `amount` DOUBLE NULL',
|
||
|
|
'SELECT ''skip pargar_sync_logs.amount'' AS info'
|
||
|
|
);
|
||
|
|
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||
|
|
|
||
|
|
SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE
|
||
|
|
FROM information_schema.COLUMNS
|
||
|
|
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pargar_sync_logs' AND COLUMN_NAME = 'amount';
|