sql >> Databáze >  >> RDS >> Mysql

Nelze vytvořit tabulku mysql kvůli nesprávné hodnotě datetime ... pro funkci str_to_date

Chování, které vidíte, mi naznačuje, že používáte striktní SQL_MODE (což je obecně dobrý nápad, BTW).

Možná budete schopni dosáhnout toho, co chcete, nastavením méně přísného SQL_MODE pro vaši relaci.

Zde je příklad znázorňující vaši CREATE TABLE příkaz selže v MySQL 5.7 s STRICT_ALL_TABLES režimu, ale úspěšný, jakmile toto omezení odstraním:

mysql> select @@session.sql_mode;
+--------------------+
| @@session.sql_mode |
+--------------------+
| STRICT_ALL_TABLES  |
+--------------------+
1 row in set (0.00 sec)

mysql> CREATE TABLE myTable AS select date(str_to_date("XXXX","%d-%M-%Y %H:%i:%S"));
ERROR 1411 (HY000): Incorrect datetime value: 'XXXX' for function str_to_date

mysql> set session sql_mode = '';
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE TABLE myTable AS select date(str_to_date("XXXX","%d-%M-%Y %H:%i:%S"));
Query OK, 1 row affected, 1 warning (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 1

mysql> select * from myTable;
+-----------------------------------------------+
| date(str_to_date("XXXX","%d-%M-%Y %H:%i:%S")) |
+-----------------------------------------------+
| NULL                                          |
+-----------------------------------------------+
1 row in set (0.01 sec)


  1. Dotaz MySQL – záznamy mezi dneškem a posledními 30 dny

  2. Zkontrolujte, zda je objekt uloženou procedurou pomocí OBJECTPROPERTY() na serveru SQL Server

  3. Převedení uživatelů z uživatelského jména na uživatelskou_skupinu

  4. Jak obnovit databázi pomocí Správce zálohování