Ошибка Out of range value for column ID
Внос даных выбивает ошибку 167 Out of range value for column 'id' at row 1. Тип данных колонки id - INT. Но вот в чём беда максимальное значение инта больше двух милиардов, но в БД максимально существующий айдишник чуть больше 77 милионов. Последний айди записи 77683102. A show create table AUTO_INCREMENT=78683103. Версия БД mysql Ver 15.1 Distrib 10.2.11-MariaDB, for Linux (x86_64) using readline 5.1
CREATE TABLE `counter_history` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`counter_id` int(11) DEFAULT NULL,
`source_consuming_units_id` int(11) DEFAULT NULL,
`source_type_id` int(11) DEFAULT NULL,
`date` datetime DEFAULT NULL,
`created_date` datetime DEFAULT NULL,
`value` double NOT NULL,
`isActive` tinyint(1) NOT NULL,
`is_verification` tinyint(1) NOT NULL,
`diff_value` double NOT NULL,
`temperature` float NOT NULL,
`isInterpolation` tinyint(1) NOT NULL,
`original_value` double NOT NULL,
`outside_temperature` double NOT NULL,
`date_date` date DEFAULT NULL,
`color` varchar(28) COLLATE utf8_unicode_ci DEFAULT NULL,
`tax_id` int(11) DEFAULT NULL,
`day_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`tax_value` double NOT NULL,
PRIMARY KEY (`id`),
KEY `IDX_A9D12C6AFCEEF2E3` (`counter_id`),
KEY `IDX_A9D12C6AA9092043` (`source_consuming_units_id`),
KEY `IDX_A9D12C6A8C9334FB` (`source_type_id`),
KEY `date_date` (`date_date`),
KEY `IDX_A9D12C6AB2A824D8` (`tax_id`),
KEY `active_counter_history` (`day_id`,`counter_id`,`isActive`),
KEY `date_date_2` (`date_date`),
CONSTRAINT `FK_A9D12C6A8C9334FB` FOREIGN KEY (`source_type_id`) REFERENCES `source_type` (`id`) ON DELETE CASCADE,
CONSTRAINT `FK_A9D12C6A9C24126` FOREIGN KEY (`day_id`) REFERENCES `date` (`day`) ON DELETE SET NULL,
CONSTRAINT `FK_A9D12C6AA9092043` FOREIGN KEY (`source_consuming_units_id`) REFERENCES `source_consuming_units` (`id`) ON DELETE CASCADE,
CONSTRAINT `FK_A9D12C6AB2A824D8` FOREIGN KEY (`tax_id`) REFERENCES `tax` (`id`) ON DELETE SET NULL,
CONSTRAINT `FK_A9D12C6AFCEEF2E3` FOREIGN KEY (`counter_id`) REFERENCES `counters` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=78683103 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
create definer = energoservic@`127.0.0.1` trigger before_counter_history_insert
before insert
on counter_history
for each row
BEGIN
set NEW.date_date = date(NEW.date);
END;
create definer = root@`127.0.0.1` trigger update_building_monthly_counter_history_after_delete
after delete
on counter_history
for each row
BEGIN
IF EXISTS(SELECT id FROM counters WHERE id = OLD.counter_id) THEN
BEGIN
SELECT building_id INTO @buildingId FROM counters WHERE id = OLD.counter_id LIMIT 1;
UPDATE building_monthly_counter_history
SET value = value - OLD.diff_value
WHERE building_id = @buildingId
AND source_type_id = OLD.source_type_id
AND counter_id = OLD.counter_id
AND DATE_FORMAT(month, '%Y-%m') = DATE_FORMAT(OLD.date_date, '%Y-%m');
END;
END IF;
END;
create definer = root@`127.0.0.1` trigger update_building_monthly_counter_history_after_insert
after insert
on counter_history
for each row
BEGIN
IF NEW.date_date IS NOT NULL AND EXISTS(SELECT id FROM counters WHERE id = NEW.counter_id) THEN
BEGIN
SELECT id, parent_id
INTO @buildingId, @parentId
FROM building
WHERE id = (SELECT building_id FROM counters WHERE id = NEW.counter_id LIMIT 1)
LIMIT 1;
SELECT source_type_id
INTO @sourceType
FROM counters
WHERE id = NEW.counter_id
LIMIT 1;
INSERT INTO building_monthly_counter_history (`id`, `subject_id`, `building_id`, `source_type_id`,
`counter_id`, `month`, `value`)
VALUES (null,
@parentId,
@buildingId,
@sourceType,
NEW.counter_id,
DATE_ADD(DATE_ADD(LAST_DAY(NEW.date_date), INTERVAL 1 DAY), INTERVAL -1 MONTH),
NEW.diff_value)
ON DUPLICATE KEY UPDATE value = value + NEW.diff_value;
END;
END IF;
END;
create definer = root@`127.0.0.1` trigger update_building_monthly_counter_history_after_update
after update
on counter_history
for each row
BEGIN
IF EXISTS(SELECT id FROM counters WHERE id = OLD.counter_id) THEN
BEGIN
SELECT building_id INTO @buildingId FROM counters WHERE id = OLD.counter_id LIMIT 1;
IF NOT EXISTS(
SELECT id
FROM building_monthly_counter_history
WHERE building_id = @buildingId
AND source_type_id = OLD.source_type_id
AND counter_id = OLD.counter_id
AND DATE_FORMAT(month, '%Y-%m') = DATE_FORMAT(OLD.date_date, '%Y-%m')
)
THEN
BEGIN
SELECT id, parent_id
INTO @buildingId, @parentId
FROM building
WHERE id = (SELECT building_id FROM counters WHERE id = NEW.counter_id LIMIT 1)
LIMIT 1;
SELECT source_type_id
INTO @sourceType
FROM counters
WHERE id = NEW.counter_id
LIMIT 1;
INSERT INTO building_monthly_counter_history (`id`, `subject_id`, `building_id`, `source_type_id`,
`counter_id`, `month`, `value`)
VALUES (null,
@parentId,
@buildingId,
@sourceType,
NEW.counter_id,
DATE_ADD(DATE_ADD(LAST_DAY(NEW.date_date), INTERVAL 1 DAY), INTERVAL -1 MONTH),
NEW.diff_value)
ON DUPLICATE KEY UPDATE value = value + NEW.diff_value;
END;
ELSE
SELECT building_id INTO @buildingId FROM counters WHERE id = OLD.counter_id LIMIT 1;
UPDATE building_monthly_counter_history
SET value = value + (NEW.diff_value - OLD.diff_value)
WHERE building_id = @buildingId
AND source_type_id = OLD.source_type_id
AND counter_id = OLD.counter_id
AND DATE_FORMAT(month, '%Y-%m') = DATE_FORMAT(OLD.date_date, '%Y-%m');
END IF;
END;
END IF;
END;