ホームページ >データベース >mysql チュートリアル >MySQL テーブル列の文字セットを変更すると「日付時刻値が正しくありません」エラーが発生するのはなぜですか?
レガシー MySQL データベースを使用する場合、文字の変更が原因で問題が発生することは珍しくありませんセットと MySQL のバージョン。この特定の問題は、日時列の文字セットを変更し、「不正な日時値」に関するエラー メッセージが表示されることに関連しています。
問題の説明:
分析:
この問題の根本原因は、作成された列に無効な日時値、特にゼロ値 '0000 が存在することです。 -00-00 00:00:00'。 MySQL 5.7 には日時値に対するより厳格な検証ルールがあり、この無効な値によりカラムの変更が失敗します。
考えられる解決策:
1. Null 値の識別と更新:
作成された列の文字セットを変更する前に、すべての Null 値を識別し、有効な日時に更新することが重要です。これは、次のクエリを使用して実行できます:
UPDATE users SET created = NULL WHERE created IS NULL;
2.無効な日時値の Null への変換:
作成された列に null 値が存在しない場合、無効な日時値 '0000-00-00 00:00:00' を null に変換する必要があります。これは、次のクエリを使用して実現できます:
UPDATE users SET created = NULL WHERE CAST(created AS CHAR(20)) = '0000-00-00 00:00:00';
3.列の文字セットの変更:
無効な datetime 値が解決されると、first_name 列の文字セットを安全に変更できるようになります:
ALTER TABLE users MODIFY first_name varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
4 。追加の考慮事項:
以上がMySQL テーブル列の文字セットを変更すると「日付時刻値が正しくありません」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。