数据格式问题导致导入sql文件失败
问题描述如下:
MySQL导入数据库时,[SQL] Query water_pv3 start [ERR] 1292 - Incorrect date value: '0000-00-00' for column 'DATE_I' at row 1 [ERR] 是什么原因
通过配置文件解决:
### 在 Linux 上:
1. **全局配置文件**(通常适用于所有 MySQL 实例):
- `/etc/my.cnf`
- `/etc/mysql/my.cnf`
2. **本地配置文件**(适用于特定 MySQL 实例):
- `/usr/local/mysql/etc/my.cnf`
- `/usr/local/etc/my.cnf`
- `~/my.cnf`
### 在 Windows 上:
- `C:\ProgramData\MySQL\MySQL Server X.Y\my.ini`(其中 `X.Y` 是你的 MySQL 版本号)
- `C:\Program Files\MySQL\MySQL Server X.Y\my.ini` 或 `my.cnf`
- `C:\Windows\my.ini` 或 `my.cnf`
### 在 macOS 上:
- `/usr/local/mysql/my.cnf`
- `/etc/my.cnf`
中写入下面的语句即可:
[mysqld]
sql_mode = "NO_ENGINE_SUBSTITUTION"
注意:
- 配置文件在不同的系统中有不同的位置,得好好找
[mysqld]
中字母d可别忘记,不仍然是没用的
通过SQL命令解决
有时候,通过配置文件结解决会出现很多问题, 比如:
- 版本通匹配,
- 配置文件的路径不统一,
- 需要重新启动。 总之各种问题, 费时费力
通过sql命令解决是更为稳妥的方式:
命令行中使用命令
# 登录mysql数据库
mysql -u root -p
# 显示数据库
show databases;
# 选择数据库
USE xxxdatabase;
# 显示sql模式
SELECT @@sql_mode;
# 删除某种模式
SET sql_mode = REPLACE(@@sql_mode, 'NO_ENGINE_SUBSTITUTION', '');
SET sql_mode = REPLACE(@@sql_mode, 'NO_ZERO_DATE', '');
Navicat中操作更方便
点击相应表,然后建立新的查询
# 删除某种模式
SET sql_mode = REPLACE(@@sql_mode, 'NO_ENGINE_SUBSTITUTION', '');
SET sql_mode = REPLACE(@@sql_mode, 'NO_ZERO_DATE', '');
即可
数据库导入注意事项
- 导出‘结构+数据’相当于导出所有内容
- 导出结构部分含有view视图
- 再导入的时候经常出错,有可能是视图建立先后顺序的问题
文档信息
- 本文作者:Chaojie Men
- 本文链接:https://menchaojie.github.io/2024/07/29/MySQL-input-problems/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)