sql >> データベース >  >> RDS >> Mysql

MySQL 8のエラーコードを修正する方法:1525および1292?

    それほど悪いことは、移行スクリプトと影響を受けるアプリケーションの両方のセッション全体のSQLモードを変更することです。これは、単純な1回の変更である必要があります(接続コードが100か所にコピーアンドペーストされない限り)。無効な日付を許可するモードは、ALLOW_INVALID_DATES> :

    SET @@SESSION.sql_mode = CONCAT_WS(',', @@SESSION.sql_mode, 'ALLOW_INVALID_DATES');
    

    完全なデモ

    mysql> CREATE TABLE foo (bar DATE);
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> SELECT @@SESSION.sql_mode;
    +--------------------------------------------+
    | @@SESSION.sql_mode                         |
    +--------------------------------------------+
    | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
    +--------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> INSERT INTO foo (bar) VALUES ('2019-02-30');
    ERROR 1292 (22007): Incorrect date value: '2019-02-30' for column 'bar' at row 1
    mysql> SET @@SESSION.sql_mode = CONCAT_WS(',', @@SESSION.sql_mode, 'ALLOW_INVALID_DATES');
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> INSERT INTO foo (bar) VALUES ('2019-02-30');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT * FROM foo;
    +------------+
    | bar        |
    +------------+
    | 2019-02-30 |
    +------------+
    1 row in set (0.00 sec)
    


    1. Mysql異なる値に対してCOLを複数回選択します

    2. EFの起動が非常に遅い-15分

    3. アクティブレコード:JSONクエリ

    4. 任意の列に対して1つのテーブルから共通の行を取得します