MySQL不正な日時値: '0000-00-00 00:00:00'

lorm:

私は最近、10年前に作成された古いプロジェクトを引き継ぎました。MySQL 5.1を使用します。

特に、デフォルトの文字セットをlatin1からutf8に変更する必要があります。

例として、次のようなテーブルがあります。

  CREATE TABLE `users` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `first_name` varchar(45) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT NULL,
    `last_name` varchar(45) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT NULL,
    `username` varchar(127) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
    `email` varchar(127) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
    `pass` varchar(20) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
    `active` char(1) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL DEFAULT 'Y',
    `created` datetime NOT NULL,
    `last_login` datetime DEFAULT NULL,
    `author` varchar(1) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT 'N',
    `locked_at` datetime DEFAULT NULL,
    `created_at` datetime DEFAULT NULL,
    `updated_at` datetime DEFAULT NULL,
    `ripple_token` varchar(36) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT NULL,
    `ripple_token_expires` datetime DEFAULT '2014-10-31 08:03:55',
    `authentication_token` varchar(255) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `index_users_on_reset_password_token` (`reset_password_token`),
    UNIQUE KEY `index_users_on_confirmation_token` (`confirmation_token`),
    UNIQUE KEY `index_users_on_unlock_token` (`unlock_token`),
    KEY `users_active` (`active`),
    KEY `users_username` (`username`),
    KEY `index_users_on_email` (`email`)
  ) ENGINE=InnoDB AUTO_INCREMENT=1677 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC

私はこれに取り組むために自分のMacをセットアップしました。それについてあまり考えずに、MySQL 5.7をインストールする「brew install mysql」を実行しました。だから私はいくつかのバージョンの競合があります。

このデータベースのコピーをダウンロードしてインポートしました。

次のようなクエリを実行しようとすると、

  ALTER TABLE users MODIFY first_name varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci    NOT NULL  

私はこのエラーを受け取ります:

  ERROR 1292 (22007): Incorrect datetime value: '0000-00-00 00:00:00' for column 'created' at row 1

私はこれで修正できると思いました:

  ALTER TABLE users MODIFY created datetime  NULL DEFAULT '1970-01-01 00:00:00';
  Query OK, 0 rows affected (0.06 sec)
  Records: 0  Duplicates: 0  Warnings: 0

しかし私は得る:

  ALTER TABLE users MODIFY first_name varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci    NOT NULL ;
  ERROR 1292 (22007): Incorrect datetime value: '0000-00-00 00:00:00' for column 'created' at row 1

すべての値を更新する必要がありますか?

ルシア・パサリン:

テーブルが空であるか、それほど大きくない場合は、createステートメントを.sqlファイルとしてエクスポートし、必要に応じて書き換えてください。既存のデータがある場合、つまりエクスポート挿入ステートメントも同じように実行します(これを作成ステートメントとして別のファイルで行うことをお勧めします)。最後に、テーブルをドロップし、最初のcreateステートメントを実行してから挿入します。

mysqldumpMySQLインストールに含まれているいずれかのコマンドを使用することも、MySQL Workbenchをインストールすることもできます。MySQLWorkbenchは、特定のコマンドオプションを探すことなく、非常にカスタマイズ可能な方法でこのオプションを含む無料のグラフィカルツールです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

不正なDateTime値 '0000-00-00 00:00:00'-Date_Sub()in Have

分類Dev

JDBCでのDATETIME値0000-00-00 00:00:00の処理

分類Dev

MySQL Select MIN DateTime when DateTime is set to 0000-00-00 00:00:00

分類Dev

PostgreSQLではNULLに "0000-00-00 00:00:00" の交換

分類Dev

0000-00-00 00:00:00を解析する方法は?

分類Dev

Doctrine2 default timestamp wtih "0000-00-00 00:00:00" format?

分類Dev

Mysql:0000-00-00をnullに設定

分類Dev

PHP: Replace time string 00:00:00 to 00:00

分類Dev

#1292-不正な日付値: '0000-00-00'

分類Dev

#1292-不正な日付値: '0000-00-00'

分類Dev

Pythonで日時0000-00-0000:00:00を初期化する方法は?

分類Dev

00:00:00DateTime.ToStringは12:00:00になります

分類Dev

日付が0000-00-0000:00:00のMySQLチェックケース?

分類Dev

laravel 5.3エラーにアップグレードした後、無効な日時形式:1292不正な日時値: '0000-00-00 00:00:00'

分類Dev

「0000-00-00 00:00:00」をTIMESTAMPに変換できません

分類Dev

SQL値リスト00:00〜24:00

分類Dev

Store timestamp with time 00:00:00

分類Dev

Cronjob Pausing between 00:00 and 01:00

分類Dev

LocalDateTime 0000-00-0000:00:00を使用したJava解析JSON

分類Dev

タイムスタンプの0000-00-0000:00:00

分類Dev

#1292 - Incorrect date value: '0000-00-00'

分類Dev

#1292 - Incorrect date value: '0000-00-00'

分類Dev

「0000:00:0000:00:00」を日付に解析すると-0001-11-28T00:00:00Zが返されるのはなぜですか?

分類Dev

Mysqlの日時はmysqlバージョン5.6では0000-00-0000:00:00になります

分類Dev

Java getDate0000 / 00/00が奇妙な値を返す

分類Dev

Java getDate0000 / 00/00が奇妙な値を返す

分類Dev

時間の配列を作成します:00:00、01:00、02:00

分類Dev

マシンコードで0000 00 00 00 00などはどういう意味ですか?

分類Dev

挿入日は「0000-00-00」を挿入しています

Related 関連記事

  1. 1

    不正なDateTime値 '0000-00-00 00:00:00'-Date_Sub()in Have

  2. 2

    JDBCでのDATETIME値0000-00-00 00:00:00の処理

  3. 3

    MySQL Select MIN DateTime when DateTime is set to 0000-00-00 00:00:00

  4. 4

    PostgreSQLではNULLに "0000-00-00 00:00:00" の交換

  5. 5

    0000-00-00 00:00:00を解析する方法は?

  6. 6

    Doctrine2 default timestamp wtih "0000-00-00 00:00:00" format?

  7. 7

    Mysql:0000-00-00をnullに設定

  8. 8

    PHP: Replace time string 00:00:00 to 00:00

  9. 9

    #1292-不正な日付値: '0000-00-00'

  10. 10

    #1292-不正な日付値: '0000-00-00'

  11. 11

    Pythonで日時0000-00-0000:00:00を初期化する方法は?

  12. 12

    00:00:00DateTime.ToStringは12:00:00になります

  13. 13

    日付が0000-00-0000:00:00のMySQLチェックケース?

  14. 14

    laravel 5.3エラーにアップグレードした後、無効な日時形式:1292不正な日時値: '0000-00-00 00:00:00'

  15. 15

    「0000-00-00 00:00:00」をTIMESTAMPに変換できません

  16. 16

    SQL値リスト00:00〜24:00

  17. 17

    Store timestamp with time 00:00:00

  18. 18

    Cronjob Pausing between 00:00 and 01:00

  19. 19

    LocalDateTime 0000-00-0000:00:00を使用したJava解析JSON

  20. 20

    タイムスタンプの0000-00-0000:00:00

  21. 21

    #1292 - Incorrect date value: '0000-00-00'

  22. 22

    #1292 - Incorrect date value: '0000-00-00'

  23. 23

    「0000:00:0000:00:00」を日付に解析すると-0001-11-28T00:00:00Zが返されるのはなぜですか?

  24. 24

    Mysqlの日時はmysqlバージョン5.6では0000-00-0000:00:00になります

  25. 25

    Java getDate0000 / 00/00が奇妙な値を返す

  26. 26

    Java getDate0000 / 00/00が奇妙な値を返す

  27. 27

    時間の配列を作成します:00:00、01:00、02:00

  28. 28

    マシンコードで0000 00 00 00 00などはどういう意味ですか?

  29. 29

    挿入日は「0000-00-00」を挿入しています

ホットタグ

アーカイブ