SQLite3 put a parse error in my schema.rb for timestamps

Railsers:

I switched from MySQL to Sqlite3 for Test-Driven Development. It meant the difference between

(Long term, I want to understand the db:migrate system well enough that I can run a long test, occassionally, that migrates everything to MySQL and retests it there. That will prevent nasty surprises at deployment time. But that's not the current question!)

Because I don't lean on db:migrate yet, I start the cycle by keeping a file, db/create.sql, and if it upgrades, then my tests run it in the database to create the schema. So the table contains goodies like these:

drop table chats;

create table chats (   id integer primary key, -- auto_increment,   user_id integer not null,   panel_id integer not null,   uttered_at timestamp DEFAULT CURRENT_TIMESTAMP,   utterance varchar(255) not null   );

(Note, for example, that MySQL will [sometimes] require the auto_increment, but SQLite can't use it.)

Now note the timestamp DEFAULT CURRENT_TIMESTAMP. That's because I'm too lazy to write Time.now inside the model code for the Chat object. I want the database itself to take care of low-level details.

But something is migrating that schema back into schema.rb looking like this:

  create_table "chats", :force => true do |t|     t.column "user_id", :integer, :null => false     t.column "panel_id", :integer, :null => false     t.column "uttered_at", :timestamp, :default => Fri Nov 17 18:03:40 -0800 2006     t.column "utterance", :string, :null => false   end

Notice :default => points to a timestamp that's A> not in :db format, and B> isn't a string. This causes a big cascade of silly syntax errors.

What is Rails (or, possibly, me) doing wrong?

I switched from MySQL to Sqlite3 for Test-Driven Development. It meant the difference between

2 minutes and 8 seconds for a short batch of lean functional tests.