"start_date"という名前の列を含むテーブルがあります。私は1つの更新クエリ内のすべての日付時刻に時間を追加したいが、それは私にエラーメッセージColumn 'start_date' cannot be null
MySQLはタイムスタンプの時刻を追加するためにすべての行を更新します。「列 'start'はnullにはできません」
を与え、私は、MySQL 5.7.17と次のクエリを使用しています:
UPDATE tbl_event SET start_date = DATE_ADD(start_date, INTERVAL 1 HOUR);
それが正常に動作します私が1行でそれをやっているときに、私はすべてを変更したいときではありません。ここに何かがないのですか?
編集:あなたは(少なくとも1つを持っている場合
CREATE TABLE `tbl_event` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`created_by` int(11) DEFAULT NULL,
`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`start_date` datetime NOT NULL,
`end_date` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `FK_EVENT_CREATED_BY` (`created_by`),
CONSTRAINT `FK_EVENT_CREATED_BY` FOREIGN KEY (`created_by`) REFERENCES `tbl_user` (`id`) ON DELETE SET NULL,
) ENGINE=InnoDB AUTO_INCREMENT=442 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
この列にnull値があるようです。 start_dateがnullのレコードをすべて選択してください。 – Jens
@Jensは言っています。もしnullでないものを更新したいのであれば、 'WHERE start_date is not NULL'をクエリに追加してください。 –
私の質問では、 nullにならないため、null値は含まれません。列のすべての値は有効な日付です。 –