I’m taking a crack at Rails and have run into a snag fairly early on.
I read a tutorial that showed me how to use migrations and everything
was going fine until I actually tried to use what I’d written.
First off, I’m using Windows XP, MySQL 5.0.19, rails 2.2, ruby 1.8.5.
I used this little script to verify the connection to the database was
working:
http://blog.caboo.se/articles/2005/8/4/test-your-database-connection-in-rails
The migration file is pretty simple. So simple it’s probably not the
problem.
class BankDb < ActiveRecord::Migration
def self.up
create_table “accounts” do |t|
t.column “id”, :integer
t.column “name”, :string
end
end
def self.down
drop_table “accounts”
end
end
g:\sites\bank\db\migrate>rake db:migrate VERSION=1
(in g:/sites/bank)
== BankDb: migrating
– create_table(“accounts”)
rake aborted!
Mysql::Error: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to
use near ‘(
11), name
varchar(255) DEFAULT NULL) ENGINE=InnoDB’ at line 1:
CREATE TABLE accounts (id
int(11) DEFAULT NULL auto_increment
PRIMARY KEY(11), nam e
varchar(255) DEFAULT NULL) ENGINE=InnoDB
I logged into MySQL and tried the SQL statement generated but changed
“PRIMARY KEY(11)” to simply “PRIMARY KEY” and it worked. I assume
there’s a version mismatch with the syntax Rails expects MySQL to
understand and what my version of MySQL really does understand.
I haven’t had much luck with web searches for things like rails migrations primary key
or migrations mysql syntax issues
or,
well, anything else I thought up. I assume I just need to update
“migrations” but googling rails upgrade migrations
and the like
doesn’t do much good either. Obviously it’s something obvious that all
rails guys know and don’t have to look up.
What am I missing? =(
Thanks!