Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Но ведь все сколько-нибудь компетентные вебдевелоперы знают, что надо использовать движок InnoDB, который — в контексте хранилища для сайта — со всех сторон лучше MyISAMа.Скорость?
Но ведь, даже если предположить, что реально писать непробиваемую валидацию, которая не пропустит в базу ни одного неправильного поля, то все равно не все поля можно покрыть валидаторами.
Допустим, что ты будешь делать, если переполнится поле-счетчик, обновляемое по counter_cache?
Или если кто-то повесит на поле, отвечающее за полиморфизм, скажем, длину в 10 символов, а потом в проекте случится класс, у которого имя длиннее 10 символов, и его запишут в это поле?
Можно, естественно, в каждом таком случае писать проверку вручную, но гораздо дешевле включить строгий режим.
mysql> SET sql_mode = '';
mysql> SELECT CAST(0 AS UNSIGNED) - 1;
+-------------------------+
| CAST(0 AS UNSIGNED) - 1 |
+-------------------------+
| 18446744073709551615 |
+-------------------------+
mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';
mysql> SELECT CAST(0 AS UNSIGNED) - 1;
+-------------------------+
| CAST(0 AS UNSIGNED) - 1 |
+-------------------------+
| -1 |
+-------------------------+
Строгий режим MySQL и почему он должен быть включен