title: MySQL Incorrect datetime value: '0000-00-00 00:00:00'
body: <p>I've recently taken over an old project that was created 10 years ago. It uses MySQL 5.1.</p>
  
  <p>Among other things, I need to change the default character set from latin1 to utf8.</p>
  
  <p>As an example, I have tables such as this: </p>
  
  <pre><code>  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
  </code></pre>
  
  <p>I set up my own Mac to work on this. Without thinking too much about it, I ran "brew install mysql" which installed MySQL 5.7. So I have some version conflicts.</p>
  
  <p>I downloaded a copy of this database and imported it. </p>
  
  <p>If I try to run a query like this: </p>
  
  <pre><code>  ALTER TABLE users MODIFY first_name varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci    NOT NULL  
  </code></pre>
  
  <p>I get this error: </p>
  
  <pre><code>  ERROR 1292 (22007): Incorrect datetime value: '0000-00-00 00:00:00' for column 'created' at row 1
  </code></pre>
  
  <p>I thought I could fix this with: </p>
  
  <pre><code>  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
  </code></pre>
  
  <p>but I get: </p>
  
  <pre><code>  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
  </code></pre>
  
  <p>Do I have to update every value? </p>