9

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

select * from table
>> Mysql2::Error: Invalid date: 1900-00-00

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

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 |
+-------------------+
|                   |
4

4 回答 4

19

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

SET SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
于 2013-04-11T22:37:34.810 回答
11
  • 在命令行中登录mysqlmysql -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
于 2017-01-21T15:37:03.997 回答
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"

于 2017-02-24T16:35:27.603 回答
0

这个解决了我的问题。我在本地 MySQL 5.7 ubuntu 18.04 中进行了测试。

set global sql_mode="NO_ENGINE_SUBSTITUTION";

在全局运行此查询之前,我在/etc/mysql/conf.d目录中添加了一个 cnf 文件 。cnf 文件名为mysql.cnf和代码

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

然后我重启mysql

sudo service mysql restart

希望这可以帮助某人。

于 2019-07-16T05:02:05.937 回答