| Bug #18248 | error messages issued with STRICT_ALL_TABLES are sometimes misleading | ||
|---|---|---|---|
| Submitted: | 15 Mar 2006 7:38 | Modified: | 23 Mar 2006 17:08 |
| Reporter: | Giuseppe Maxia | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: Errors | Severity: | S4 (Feature request) |
| Version: | 5.0.19, 5.1.7 | OS: | Any (all) |
| Assigned to: | CPU Architecture: | Any | |
[23 Mar 2006 17:08]
Valeriy Kravchuk
Thank you for a reasonable feature request.
[24 Apr 2007 22:13]
Philip Stoev
Please see Bug #28079 for another error message like that and a possible solution involving simple re-phrasing on existing error messages. I also believe that the category for this bug is wrong, I must be "Server: Errors".

Description: when working under STRICT_ALL_TABLE sql mode, the database engine correctly rejects wrong values, but it still gives error messages as if they were warnings. If I get a message saying "data truncated", I may assume that the data was inserted with a wrong value. Instead, the data was not inserted (correctly), but the message is wrong. How to repeat: create table emp(name varchar(30), gender enum('M','F')) engine=myisam; set sql_mode=strict_all_tables; insert into emp values ('a','a'); ERROR 1265 (01000): Data truncated for column 'gender' at row 1 create table person(name varchar(30), colors SET('R','Y','B')) engine=myisam; insert into person values ('A','A'); ERROR 1265 (01000): Data truncated for column 'colors' at row 1 Suggested fix: Change the message so that it shows what the DBMS is doing, the same that is happening for dates. If I insert '2006-02-31' in a DATE column under STRICT_ALL_TABLE SQL mode, I get "ERROR 1292 (22007): Incorrect date value: '2006-02-31' for column 'd' at row 1", which is what I would expect. Error messages for wrong ENUM or SET values should say that the data was rejected, rather than truncated.