I have a CONNECT to a MariaDB server table which contains a column of type YEAR.
Trying to insert a value into this column always fails. (I have had no problem at all inserting values into other data types that I tried.)
Minimal example using a locally installed MariaDB 10.9.3 server: (Problem came up originally when CONNECTing to a MySQL 5.7.x server – same effect.)
USE test;
|
CREATE TABLE t0 (jahr year(4) not null);
|
CREATE TABLE t0_conn ENGINE=CONNECT CONNECTION='mysql://USERNAME:PASSWORD@localhost/test/t0' `TABLE_TYPE`='MYSQL';
|
INSERT INTO t0 VALUES (2022); -- inserting into underlying table directly works OK
|
SELECT * FROM t0_conn; -- works OK, shows inserted value 2022
|
INSERT INTO t0_conn VALUES (2023);
|
-- fails with error message:
|
ERROR 1296 (HY000): Got error 122 '(1265) Data truncated for column 'jahr' at row 1 [INSERT INTO `t0` (`jahr`) VALUES ('2023-01-01 00:00:00')]' from CONNECT
|
It seems that the CONNECT engine over-eagerly converts the value-to-insert from its simple form (2022) into datetime form before sending it over the CONNECTion.
On the receiving end, trying to insert a datetime value into a year field fails. (This latter is expected: trying to insert a datetime directly into the underlying table t0 will also fail, and correctly so.)
Thus, the problem seems to be the over-eager data type conversion performed by the CONNECT engine.