Страницы

2017-06-05

MySQL мыши и кактус

Есть такое забавное выражение "мыши плакали кололись но продолжили есть кактус".

Цитата одного из сотрудников MailRu Group звучит так - "Кто то как мы, перешёл на PostgreSQL и теперь счастлив, а кто то остался на MySQL и продолжает есть кактус".

Собственно приведу всего один простой наглядный пример почему это так.

Для эксперименты были взяты MariaDB 10.1 и 10.2, последняя соответствует MySQL 5.7

Первый пример с MariaDB 10.1

Создаю базу test
MariaDB [(none)]> create database test;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use test
Database changed

Создаю таблицу
MariaDB [test]> CREATE TABLE k (
    -> A INT NULL,
    -> B NUMERIC (4, 2)
    -> );
Query OK, 0 rows affected (1.22 sec)

Делаю вставку явно не вписывающуюся в таблицу! и о чудо всё отработало!
MariaDB [test]> INSERT INTO k VALUE (NULL, 1234.5678);
Query OK, 1 row affected, 1 warning (0.14 sec)

Делаю выборку и результат совсем не тот что был во время вставки!!!
MariaDB [test]> SELECT * FROM k;
+------+-------+
| A    | B     |
+------+-------+
| NULL | 99.99 |
+------+-------+
1 row in set (0.00 sec)

А теперь пример с MariaDB 10.2

Создаю базу test
MariaDB [(none)]> create database test; 
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use test
Database changed

Создаю таблицу
MariaDB [test]> CREATE TABLE k (
    -> A INT NULL,
    -> B NUMERIC (4, 2)
    -> );
Query OK, 0 rows affected (1.68 sec)

Делаю вставку явно не вписывающуюся в таблицу, и ... в последней версии есть проверка на ошибки
MariaDB [test]> INSERT INTO k VALUE (NULL, 1234.5678);
ERROR 1264 (22003): Out of range value for column 'B' at row 1

Вообще в последней версии много чего добавили для проверок на криворукость и невнимательность но не так много как хотелось бы.

Я думаю не стоит объяснять смыл перехода на MySQL 5.7 или MariaDB 10.2
Да и если грамотно делались запросы и учитывались все моменты то переход должен пройти прозрачно и ошибок не будет. Если всё делалось задней левой то и результат будет такой же. ;-)

Комментариев нет:

Отправить комментарий