У меня есть огромная проблема с моим приложением. Прежде, чем я начну, красные предметы Mysql treating varchar as int bug? и mysql autocasting string to integer.MySQL обрабатывает строку как целое
Мой стол
CREATE TABLE `srv_table` (
`srv_id` int(11) NOT NULL AUTO_INCREMENT,
`srv_code` char(4) NOT NULL,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`srv_id`),
UNIQUE KEY `code` (`srv_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Когда я пытаюсь выбрать строки по первичному ключу и послать смешанную строку возвращает мне результаты. Пример:
SELECT * FROM srv_table WHERE srv_id='2sadf'
будет возвращать тот же результат, как:
SELECT * FROM srv_table WHERE srv_id=2
Я знаю, что это описано в MySQL, но я не мог найти, как я могу избежать этого. Есть ли настройка или что-то еще я мог бы сделать без изменений мой код и запросы?
С уважением.
UPDATE: Для этих ребят, не считаю, что она возвращает тот же результат, когда значение идентификатор wraped апострофы:
UPDATE 2:
It похоже, это не проблема в PostgreeSQL: PgSQL fiddle
ваш srv_id является целым числом, и он фактически игнорирует символы ... в чем проблема на самом деле? –
Если вы хотите убедиться, что для запроса данных используются только целые значения, тогда вы должны убедиться, что в вашей логике приложения до того, как значение будет передано в базу данных. – CBroe
Проблема в том, что я не хочу такого поведения. Есть ли способ избежать этого, или мне нужно изменить приложение для фильтрации ввода? – bksi