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
  • コマンド ラインで 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
于 2017-01-21T15:37:03.997 に答える
5

SQL Server モード [構成ファイルのリセット]

ソリューション リンク
- コマンド ラインから-バイナリ ファイルの場所which mysqld
などを取得する必要があります - 構成ファイルのパスを整理します - bash の応答は 次のようになります。変更を行います (ファイルが存在しない場合、そのファイルは参照されていません)。 - 現在のモードを調べます。ターミナルを開き、mysql データベースにログインし ます。次のコードを構成ファイルに追加して、変更する SQL モードを変更します。 - 構成ファイルを保存し、mysql サービスを再起動します。/usr/sbin/mysqld
/usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

mysql -u database_user -p -e "select @@sql_mode"

[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 に答える