mysql数据导入navicat中,报错提示1067

MySQL导入问题:
报错1067 - Invalid default value for 字段名

由于数据库版本升级,老数据库的数据文件导出以后,在新版本的数据库上执行会报错

这种问题多是由于默认值不兼容引起的,我们可以通过修改sql_mode来解决这个问题

由于我是docker部署的mysql,所以得在Liunx下来执行以下命令:
docker ps ——查看docker运行的容器 (查看mysql容器id)
docker exec -it 容器id bash ——(进入mysql容器)
mysql -u 用户名 -p ———(进入msql)
select @@sql_mode; 或 show variables like 'sql_mode'; ——(查看sql_mode)“ ;”别忘了

——通过上图中的结果我们可以看到sql_mode中有NO_ZERO_IN_DATE和NO_ZERO_DATE

set sql_mode=(select replace(@@sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE','')); ——(通过命令修改可以修改当前session的sql_mode)

通过使用命令查看全局sql_mode,我们会发现此处也需要改一下
select @@global.sql_mode;

set @@global.sql_mode=(select replace(@@global.sql_mode,'NO_ZERO_IN_DATE,NO_ZERO_DATE',''));
此时再重新去连接数据库,执行脚本,1067问题已经解决(记住一定要去重新去连接数据库,不然还是会失败)

注意上面的符号,单引号,分号等

同理

window中
my.ini中找到[mysqld] 位置 ,修改sql_mode 的值,如果没有则添加

[mysqld] 
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

或者:(已添加测试)

[mysqld] 
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

参考:

MySQL导入数据报错1067 - Invalid default value for 字段名-CSDN博客

Mysql ERROR 1067: Invalid default value for ‘date’ 解决-CSDN博客

当在Navicat导入SQL文件时出现报错[Err] 1046 - No database selected,可能是由于以下原因导致的: 1. 未选择数据库:在导入SQL文件之前,确保已经选择了要导入到的数据库。可以在Navicat的连接窗口选择数据库,或者在导入SQL文件时指定数据库。 2. MySQL配置问题:有时候,MySQL的配置可能会导致导入SQL文件时出现报错。可以尝试修改MySQL的配置文件my.ini,增加max_allowed_packet参数的值,以及增加wait_timeout和interactive_timeout参数的值。 以下是解决这个问题的两种方法: 方法一:选择数据库导入SQL文件之前,确保已经选择了要导入到的数据库。可以按照以下步骤进行操作: 1. 打开Navicat并连接到MySQL数据库。 2. 在连接窗口选择要导入到的数据库。 3. 在导航栏选择“工具”>“SQL文件执行器”。 4. 在SQL文件执行器窗口,选择要导入的SQL文件。 5. 点击“运行”按钮执行SQL文件。 方法二:修改MySQL配置文件 如果选择数据库仍然无法解决问题,可以尝试修改MySQL的配置文件my.ini。按照以下步骤进行操作: 1. 找到MySQL安装目录下的my.ini配置文件。 2. 使用文本编辑器打开my.ini文件。 3. 在文件查找max_allowed_packet参数,并增加其值。例如,将max_allowed_packet=8M修改为max_allowed_packet=16M。 4. 在文件增加wait_timeout和interactive_timeout两项参数,并设置其值。例如,可以添加以下两行: wait_timeout=28800 interactive_timeout=28800 这将增加等待超时时间为8小时。 5. 保存并关闭my.ini文件。 6. 重启MySQL服务。 请注意,修改MySQL配置文件可能需要管理员权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值