<分区>
我正在使用 mysql。我对数据类型 char(0) 感到困惑。即使根据定义,columnlength 为 0,它仍然允许添加长度更大的字符串,那么长度为零表示什么?
编辑:该值甚至没有保留。在查询时它返回空字符串。
<分区>
我正在使用 mysql。我对数据类型 char(0) 感到困惑。即使根据定义,columnlength 为 0,它仍然允许添加长度更大的字符串,那么长度为零表示什么?
编辑:该值甚至没有保留。在查询时它返回空字符串。
最佳答案
如果你想避免像这样的一些令人困惑的行为,你需要在严格模式下配置 MySQL。我通常在我的 SQL 客户端中执行此操作,因此无论服务器设置如何,我都能获得一致的行为:
SET @@SESSION.sql_mode='TRADITIONAL,NO_AUTO_VALUE_ON_ZERO';
看看区别:
mysql> SET @@SESSION.sql_mode='TRADITIONAL,NO_AUTO_VALUE_ON_ZERO';
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO foo (bar) VALUES ('x');
ERROR 1406 (22001): Data too long for column 'bar' at row 1
mysql> SET @@SESSION.sql_mode=''; -- Older default
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO foo (bar) VALUES ('x');
Query OK, 1 row affected, 1 warning (0.05 sec)
mysql> SHOW WARNINGS;
+---------+------+------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------+
| Warning | 1265 | Data truncated for column 'bar' at row 1 |
+---------+------+------------------------------------------+
1 row in set (0.00 sec)
关于mysql - CHAR(0) 允许在 mysql 中插入所有长度的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950773/