Так что у меня проблема с MySQL 5.5, которая собирается свести меня с ума.У меня есть несколько вложенных хранимых процедур, и одна из них вставляет некоторые данные в таблицу, а затем выбирает LAST_INSERT_ID()
в выходной параметр.Ниже приведена моя хранимая процедура:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `createNewSession`(
in inputIP varchar(15),
in inputPostTime bigint,
in inputPostInterval bigint,
in inputPlatform varchar(45),
out outSessionID int)
BEGIN
insert into myDB.session (IP, StartTime, LastPost, Platform)
values (inputIP, inputPostTime - inputPostInterval, inputPostTime, inputPlatform);
select LAST_INSERT_ID() into outSessionID;
END;$$
Теперь, если я передам правильные параметры (т. Е. Параметры, которые я протестировал в операторе вставки и которые работают правильно) и вызову следующее, я получу правильныеID back
CALL myDB.createNewSession('127.0.0.1', 1310062874228, 1310062894228, 'Platform', @outVar);
select LAST_INSERT_ID();
Однако, если я вызываю следующее, мне возвращается параметр BLOB
со значением ?
.
CALL myDB.createNewSession('127.0.0.1', 1310062874228, 1310062894228, 'Platform', @outVar);
select @outVar;
Почему это происходит?Эта хранимая процедура работала в течение месяца + на данный момент, и, насколько я знаю, ничего не изменилось в настройках БД.Зачем мне получать что-то кроме LAST_INSERT_ID()
при выборе исходящего параметра из хранимой процедуры?
Любая помощь будет принята с благодарностью.Схожу с ума здесь ...
РЕДАКТИРОВАТЬ
Ошибка, которую я получаю при вызове хранимой процедуры верхнего уровня, заключается в следующем:
Error Code: 1264. Out of range value adjusted for column 'outSessionID' at row 68
РЕДАКТИРОВАТЬ 2
Вот структура таблицы
Field Type Null Key Extra
'SessionID', 'int(11)', 'NO', 'PRI', NULL, 'auto_increment'
'IP', 'varchar(15)', 'NO', '', NULL, ''
'StartTime', 'bigint(20)', 'NO', '', NULL, ''
'LastPost', 'bigint(20)', 'NO', '', NULL, ''
'Platform', 'varchar(45)', 'NO', '', NULL, ''
РЕДАКТИРОВАТЬ 3
Так после возниЯ обнаружил, что следующие запросы при вызове вместе также выбирают параметр BLOB со значением '?'
set @tempVar = 25;
select @tempVar;
Разве это не должно возвращать 25?