mysql允许选择无效日期

Dam*_*che 8 mysql sql

出于某种原因,我甚至无法在表格中选择无效日期.我如何强制选择?我刚收到:

select * from table
>> Mysql2::Error: Invalid date: 1900-00-00
Run Code Online (Sandbox Code Playgroud)

我不是要插入,只是选择.我可以在选择查询中设置允许无效日期吗?

mysql --version
mysql  Ver 14.14 Distrib 5.1.61, for debian-linux-gnu (i686) using readline 6.1

mysql> select @@global.sql_mode;
+-------------------+
| @@global.sql_mode |
+-------------------+
|                   |
Run Code Online (Sandbox Code Playgroud)

Joh*_*Lee 16

这是我忽略无效日期的方法:

SET SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
Run Code Online (Sandbox Code Playgroud)


Kir*_*ell 9

  • 在命令行中登录mysql mysql -u root -p
  • 输入您的密码
  • 查看当前sql-modes使用情况SELECT @@GLOBAL.sql_mode;
  • 复制当前模式(根据需要添加或删除模式)并粘贴到下一步.
  • 设置sql-modes使用SET GLOBAL sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES';
  • 这会添加ALLOW_INVALID_DATES和删除两者NO_ZERO_DATE, NO_ZERO_IN_DATE
  • 重启MySQL服务器 /etc/init.d/mysql start


Kir*_*ell 5

SQL Server 模式 [重置配置文件]

解决方案链接
- 从命令行which mysqld
- 应该得到类似于/usr/sbin/mysqld二进制文件位置的信息
- 整理出配置文件的路径/usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
- 您的 bash 响应应如下所示:Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
- 按顺序查看文件以查看该文件的位置进行更改(如果文件不存在,则不会被引用)。
- 查找您当前的模式。打开终端并登录mysql数据库mysql -u database_user -p -e "select @@sql_mode"
- 通过在配置文件中添加以下代码来修改要更改的SQL模式。 - 保存配置文件并重启mysql服务
[mysqld]
sql-mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES"