Mysql 在严格模式下为每列添加默认值

Mysql 在严格模式下为每列添加默认值,mysql,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 me

我不能禁用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):第1行的“meta_keys”列的字符串值不正确:“\xD9\x81\xDB\x8C\xD9\x84…”


如何解决问题?

问题是,在启用严格模式之前,必须更改列。否则,每当您插入/更新或更改表时,MySQL将为任何不正确的列值提供错误:(

问题是,您必须在启用严格模式之前更改列。否则,每当您插入/更新或更改表时,MySQL将为任何不正确的列值提供错误:(

检查连接和客户端的
字符集

 - mysql -uroot -p
 - \s
您必须确保客户端和连接字符集与Db的完全相同

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

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

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

检查连接和客户端的
字符集

 - mysql -uroot -p
 - \s
您必须确保客户端和连接字符集与Db的完全相同

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

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

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

我的猜测是,更改试图更改该字段使用的当前字符集;您可能已重新指定它,以便不会无意中将其更改为服务器默认值。我的猜测是,更改试图更改该字段使用的当前字符集;您可能已重新指定它,以便不会无意中将其更改为服务器默认值。可以吗ou澄清具体需要更改的内容?所有插入/更新查询中未明确设置的每一列都必须具有默认列值(例如,VARCHAR、CHAR需要空字符串“”、整数类型需要“0”等)。此外,日期/时间列中不能有“零”值,例如“0000-00-00 00:00:00”。请参阅并不要链接到其他外部网站来解释您的答案-它们可能会更改,使您的答案无效。最好编辑答案并添加此类解释(包括确切需要更改的内容和方式)您能否澄清需要更改的内容?在所有INSERT/UPDATE查询中未明确设置的每一列都必须具有默认列值(例如,VARCHAR、CHAR需要空字符串“”、整数类型需要“0”等)。此外,日期/时间列中不能有“零”值,例如“0000-00-00 00:00:00”。请参阅并不要链接到其他外部网站来解释您的答案-它们可能会更改,使您的答案无效。最好编辑答案并添加此类解释(包括确切需要更改的内容和方式)