I am new to rails and have come across a problem with a sample
application I was working on.
When trying to use rake migrate I got the error listed below.
my db file contains the following
class ContactDb < ActiveRecord::Migration
create_table “people” do |t|
t.column “id”, :integer
t.column “name”, :string
t.column “address”, :string
t.column “city”, :string
t.column “state”, :string
t.column “zipcode”, :string
and the error is:
== ContactDb: migrating
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,
varchar(255) DEFAULT NULL,
ci' at line 1: CREATE TABLE people (id
int(11) DEFAULT NULL auto_increment PRIMARY KEY(11),name
varchar(255) DEFAULT NULL,address
varchar(255) DEFAULT NULL,city
varchar(255) DEFAULT NULL,state
varchar(255) DEFAULT NULL,zipcode` varchar(255) DEFAULT NULL) ENGINE=InnoDB
I’m using a default install.
I noticed that the value supplied to PRIMARY KEY was the number 11.
On Tue, Apr 29, 2008 at 11:31 PM, Donald [email protected] wrote:
t.column "id", :integer
Rails adds an id field for you, unless you tell it not to. So leave
Also, you might check out the new column syntax for use with
create_table. You can do less now:
It worked. Thanks!
But out of curiosity what was wrong with the original setup?
Does rails not support the addition of an id field without explicitly
telling it not to add its own, or is there something else going wrong?
Try leaving out the spec for the id column–rails will add that for you.
Also–I don’t know if it matters (probably doesn’t) but if you’re using
the current version of rails, there’s a new syntax for migrations.
Here’s my create_people, FWIW:
class CreatePeople < ActiveRecord::Migration
create_table :people do |t|
t.string :first_name, :null => false
t.string :last_name, :null => false
t.string :email_address, :null => false
execute(“alter table people add constraint fk_organizations foreign
key (organization_id) references organizations (id)”)