mysql允许选择无效日期

时间:2012-10-17 10:54:39

标签: mysql sql

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

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 个答案:

答案 0 :(得分:15)

我这样做是为了忽略无效日期:

SET SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';

答案 1 :(得分:8)

  • 在命令行mysql -u root -p
  • 中登录mysql
  • 输入您的密码
  • 使用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

答案 2 :(得分:3)

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

Solution Link
- 从命令行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模式 [mysqld]
sql-mode = "STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES"

- 保存配置文件并重新启动mysql服务

答案 3 :(得分: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

希望这可以帮助某人。