понедельник, 21 ноября 2022 г.

Ошибка вставки данных в MariaDB Server 10.9.3 mysqli_sql_exception Data too long for column

В MariaDB Server версий больше 10.1.6 включены по умолчанию режимы, требующие четкого соблюдения типов вставляемых данных.
https://mariadb.com/kb/en/sql-mode/
Например, если вставляемые текстовые данные по объему больше, чем определено в типе поля, то будет возникать ошибка:
Fatal error: Uncaught mysqli_sql_exception: Data too long for column

Посмотреть, какие режимы установлены в текущей инсталляции можно так:
MariaDB [(none)]> SELECT @@SESSION.sql_mode
    -> ;
+-------------------------------------------------------------------------------------------+
| @@SESSION.sql_mode                                                                        |
+-------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------+


Режим STRICT_TRANS_TABLES - как раз отвечает за контроль того, что длинна строки вставляемых данных должна быть меньше определенной
в структуре таблицы значения. Можно отключить этот режим и тогда вставка данных будет происходить как в старых версиях - входная строка будет обрезаться до максимально возможного, определенного в структуре таблице.

Установку редима можно производить каждый раз при подключении к таблице, точно так же как мы устанавливаем режим кодировки:

$query="SET NAMES utf8";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$query="SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);

воскресенье, 6 ноября 2022 г.

Установка и использование graphviz в RockyLinux 9

Установка graphviz
# yum install 'graphviz*'

Установка репозитария PHP
# cd /usr/src
# wget http://pear.php.net/go-pear.phar
# php go-pear.phar


Установка пакета php GraphViz
(https://pear.php.net/package/Image_GraphViz)
# /usr/bin/pear_old install Image_GraphViz

Теперь в коде PHP можно использовать:

require_once 'Image/GraphViz.php';
$gv = new Image_GraphViz();

И использовать свойства $gv для построения графиков