将默认值添加到MySQL严格模式的每一列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将默认值添加到MySQL严格模式的每一列相关的知识,希望对你有一定的参考价值。

我无法禁用mysql严格模式,因此我需要为表的每个列添加默认值。

我在下面尝试:

ALTER TABLE media
CHANGE upload_date upload_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CHANGE title title VARCHAR(500) NULL DEFAULT '',
CHANGE slug slug VARCHAR(500) NULL DEFAULT '',
CHANGE meta_title meta_title VARCHAR(500) NULL DEFAULT '',
CHANGE meta_desc meta_desc VARCHAR(500) NULL DEFAULT '',
CHANGE meta_keys meta_keys VARCHAR(500) NULL DEFAULT '',
CHANGE filename filename VARCHAR(300) NULL DEFAULT '',
CHANGE filetype filetype VARCHAR(50) NULL DEFAULT ''

我收到错误SQL错误(1366):错误的字符串值:' xD9 x81 xDB x8C xD9 x84 ...'为第1行的列'meta_keys'

我该如何解决?

答案

问题是,您必须在启用严格模式之前更改列。否则,无论何时INSERT / UPDATE或ALTER TABLE :(对于任何不正确的列值,MySQL都会给出错误:(

另一答案

检查连接和客户端的characterset

 - mysql -uroot -p
 - s

您必须确保客户端和连接字符集与Db完全相同。

Connection Characterset

如果不是,请使用以下命令重置连接和客户端字符集。

使用以下命令为客户端到服务器连接设置正确的字符集和排序规则

- mysql -uroot -p
- SET NAMES 'charset_name
- /execute/alter/table/query

以上是关于将默认值添加到MySQL严格模式的每一列的主要内容,如果未能解决你的问题,请参考以下文章

如何有效地将稀疏矩阵列添加到另一个稀疏矩阵中的每一列?

Mysql 表自动填充字段

sql将查询结果插入到表的每一列中

Java如何获取ResultSet结果中的每一列的数据类型

将函数应用于数据框中的每一列,观察每一列现有的数据类型

如何从 MySQL 中表的每一列的名称中删除前缀?