# Problems migrating from Postgres to MySQL

**URL:** <https://www.ruby-forum.com/t/problems-migrating-from-postgres-to-mysql/99207>\
**Category:** Rails\
**Created:** [January 31, 2006, 12:48am UTC](https://www.ruby-forum.com/t/problems-migrating-from-postgres-to-mysql/99207 "2006-01-31T00:48:52Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![dgm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/df788c/32.png) [@dgm](https://www.ruby-forum.com/u/dgm)\
**Post date:** [January 31, 2006, 12:48am UTC](https://www.ruby-forum.com/t/problems-migrating-from-postgres-to-mysql/99207/1 "2006-01-31T00:48:52Z")

</div>

Hello everyone,

I’m trying to migrate a working app from Postgres to MySQL, and I’m  
trying to use a migration to get it done rather than alter all my  
database table creation scripts to MySQL syntax. I’ve done loads of  
work with Postgres, but am a real newbie with MySQL…

I did a ‘rake db\_schema\_dump’ from my Postgres app, and got a nice  
looking schema file with all my tables and fields, exactly as  
expected. I then created a migration file, pasted the schema info  
into the self.up section in the schema file and made sure there were  
no obvious problems. So far, so good.

I then did a ‘gem install mysql’, created a new MySQL database, set up  
a MySQL user, tweaked database.yml to point to the new MySQL database  
and tried a ‘rake db\_schema\_import’.

Wham! Loads of warnings, ending in an ‘uninitialized constant Mysql’.  
I’ve confirmed that the database.yml file is OK. I then did a ‘rake  
db\_schema\_import --trace’; here’s what I think is the relevant section  
of the output:

\*\* Invoke db\_schema\_import (first\_time)  
\*\* Invoke environment (first\_time)  
\*\* Execute environment  
\*\* Execute db\_schema\_import  
rake aborted!  
uninitialized constant Mysql  
/usr/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/active\_support/dependencies.rb:200:in  
`const_missing' /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/mysql_adapter.rb:35:in`mysql\_connection’  
/usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active\_record/connection\_adapters/abstract/connection\_specification.rb:145:in  
`connection_without_query_cache=' /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/query_cache.rb:54:in`connection=’  
/usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active\_record/connection\_adapters/abstract/connection\_specification.rb:106:in  
`retrieve_connection' /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:20:in`connection’  
/usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active\_record/migration.rb:170:in  
`method_missing' ./db/schema.rb:7 /usr/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/schema.rb:43:in`define’  
./db/schema.rb:5  
/usr/lib/ruby/gems/1.8/gems/activesupport-1.2.5/lib/active\_support/dependencies.rb:207:in  
`load' /usr/lib/ruby/gems/1.8/gems/rails-1.0.0/lib/tasks/databases.rake:27 /usr/lib/ruby/site_ruby/1.8/rake.rb:232:in`execute’  
/usr/lib/ruby/site\_ruby/1.8/rake.rb:232:in `execute' /usr/lib/ruby/site_ruby/1.8/rake.rb:202:in`invoke’  
/usr/lib/ruby/1.8/thread.rb:135:in `synchronize' /usr/lib/ruby/site_ruby/1.8/rake.rb:195:in`invoke’  
/usr/lib/ruby/site\_ruby/1.8/rake.rb:1719:in `run' /usr/lib/ruby/site_ruby/1.8/rake.rb:1719:in`run’  
/usr/bin/rake:8

I poked around in Google and found a few people have seen the  
‘uninitialized constant Mysql’ error, but these always seem to be due  
to using old versions of Rails, gems or MySQL. I’m running the latest  
Rails, just updated all gems, and MySQL 5.1, so I can’t see that I’ve  
got any old stuff left.

Has anyone got any suggestions?

Thanks in advance

Dave M.

---

<div class="post-metadata">

**Author:** ![dgm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/df788c/32.png) [@dgm](https://www.ruby-forum.com/u/dgm)\
**Post date:** [February 1, 2006, 2:19am UTC](https://www.ruby-forum.com/t/problems-migrating-from-postgres-to-mysql/99207/2 "2006-02-01T02:19:21Z")

</div>

OK I think I got it sorted - it was probably due to an update that I  
did to (something) that had caused the wires to get crossed on the  
system. The box hadn’t been rebooted for nearly 4 months, and  
possibly a library update had crept by me unnoticed.

A reboot fixed it.

Regards

Dave M.

---

<div class="post-metadata">

**Author:** ![dgm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/df788c/32.png) [@dgm](https://www.ruby-forum.com/u/dgm)\
**Post date:** [February 1, 2006, 4:13am UTC](https://www.ruby-forum.com/t/problems-migrating-from-postgres-to-mysql/99207/3 "2006-02-01T04:13:46Z")

</div>

Glad to hear you got it working.

Just so you know, there’s no need to copy the generated schema file  
into a new migration. Just leave it in db/schema.rb and do rake  
db\_schema\_import to create the database. It generates a schema\_info  
table to hold the version, so you can just do migrations normally  
after that.

Pat

---

<div class="post-metadata">

**Author:** ![dgm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/df788c/32.png) [@dgm](https://www.ruby-forum.com/u/dgm)\
**Post date:** [February 1, 2006, 5:38am UTC](https://www.ruby-forum.com/t/problems-migrating-from-postgres-to-mysql/99207/4 "2006-02-01T05:38:14Z")

</div>

On 1/31/06, David M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> after a while…  
> Yep. I had that same experience. I now run Jamis B.'s “verbose  
> migrations” plugin. Very handy.  
> [http://svn.jamisbuck.org/rails-plugins/verbose\_migrations/](http://svn.jamisbuck.org/rails-plugins/verbose_migrations/)

---

<div class="post-metadata">

**Author:** ![dgm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/df788c/32.png) [@dgm](https://www.ruby-forum.com/u/dgm)\
**Post date:** [February 1, 2006, 4:37am UTC](https://www.ruby-forum.com/t/problems-migrating-from-postgres-to-mysql/99207/5 "2006-02-01T04:37:54Z")

</div>

Thanks Pat,

Actually this was my first chance to use migrations, and it worked  
reasonably well - made things a lot easier. Following through the  
migrations video made things a lot simpler.

The biggest problem I had was the lack of referential information that  
comes out of rake when there’s a problem with the migration code - it  
can be tough to spot a problem when you’re trawling through hundreds  
of lines of create\_table / t\_column statements that all blur together  
after a while…

Regards

Dave M.

---

<div class="post-metadata">

**Author:** ![dgm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/df788c/32.png) [@dgm](https://www.ruby-forum.com/u/dgm)\
**Post date:** [February 1, 2006, 6:02am UTC](https://www.ruby-forum.com/t/problems-migrating-from-postgres-to-mysql/99207/6 "2006-02-01T06:02:23Z")

</div>

Ooooh, that’s nice.

Now, as long as nobody tells me this was around yesterday, when I was  
going through migration hell, no-one’s gonna get hurt and we can all  
walk out of here quietly and go back to our normal lives…!

Regards

Dave M.
