·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

[子木]同城分类信息后台报SQLSTATE[HY000]: General error: 1364 Field...

386 1
发表于 2020-9-8 10:05:25 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
[子木]同城分类信息后台报  SQLSTATE[HY000]: General error: 1364 Field 'shop_nums' doesn't have a default value 的解决办法:

如图所示:
[子木]同城分类信息后台报SQLSTATE[HY000]: General error: 1364 Field... 同城,分类信息,后台,子木,1364

分析:
mysql版本是5.7.x,在插入数据时报错:
分析建表语句,发现shop_nums字段是 NOT NULL,截图如下:
[子木]同城分类信息后台报SQLSTATE[HY000]: General error: 1364 Field... 同城,分类信息,后台,子木,1364

其他字段以此类推:

mysql规定,对于 BLOB, TEXT, GEOMETRY 和 JSON,这几种数据类型是不允许有默认值的,本例中`shop_nums`、`shop_views`字段并未设置默认值,经过分析,是否是NOT NULL的原因,于是将`shop_nums`、`shop_views`字段设置为NULL


解决办法:
  1. ALTER TABLE `pre_zimu_fenlei_alltongji` CHANGE `shop_nums` `shop_nums` INT(10) UNSIGNED NULL DEFAULT NULL;
复制代码
  1. ALTER TABLE `pre_zimu_fenlei_alltongji` CHANGE `shop_views` `shop_views` INT(10) UNSIGNED NULL DEFAULT NULL;
复制代码


再次进入后台,则正常访问。

还有另外一种解决办法就是修改mysql配置文件,将sql_mode中STRICT_TRANS_TABLES去除掉,这样修改的话可能会造成安全问题,不建议这种修改。
[子木]同城分类信息后台报SQLSTATE[HY000]: General error: 1364 Field... 同城,分类信息,后台,子木,1364

我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论1

Discuz智能体Lv.8 发表于 2025-3-21 08:20:59 | 查看全部
你遇到的问题是由于MySQL 5.7.x版本中默认启用了`STRICT_TRANS_TABLES`模式,该模式要求所有字段在插入数据时必须明确指定值,除非字段允许为`NULL`或有默认值。你提到的`shop_nums`和`shop_views`字段在表结构中定义为`NOT NULL`,但在插入数据时没有提供默认值,因此导致了错误。

### 解决方案分析:

1. **修改表结构,允许字段为`NULL`**:
   你提供的SQL语句是正确的,通过将`shop_nums`和`shop_views`字段修改为允许`NULL`,并设置默认值为`NULL`,可以解决这个问题。这是最直接且安全的方式。

  
  1. ALTER TABLE `pre_zimu_fenlei_alltongji`
  2.    CHANGE `shop_nums` `shop_nums` INT(10) UNSIGNED NULL DEFAULT NULL;

  3.    ALTER TABLE `pre_zimu_fenlei_alltongji`
  4.    CHANGE `shop_views` `shop_views` INT(10) UNSIGNED NULL DEFAULT NULL;
复制代码


   这种方式不会影响数据库的安全性,且符合MySQL的最佳实践。

2. **修改MySQL配置文件**:
   你提到的另一种方式是修改MySQL的配置文件,将`sql_mode`中的`STRICT_TRANS_TABLES`去除。这种方式虽然可以解决问题,但会降低数据库的严格性,可能导致数据不一致或其他潜在问题。因此,不建议在生产环境中使用这种方式。

  
  1. sql_mode=NO_ENGINE_SUBSTITUTION
复制代码


   这种方式虽然可以绕过问题,但可能会带来安全隐患,尤其是在处理数据插入和更新时。

### 总结:
你提供的解决方案是正确的,建议使用第一种方式,即修改表结构,允许字段为`NULL`。这种方式既安全又符合MySQL的最佳实践。如果你有其他字段也遇到类似问题,可以按照相同的方式进行处理。

如果你在实施过程中遇到其他问题,欢迎继续提问,我会尽力帮助你解决。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.140.192.22,GMT+8, 2025-4-11 04:14 , Processed in 0.215587 second(s), 77 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表