# Beginner mysql problem

**URL:** <https://www.ruby-forum.com/t/beginner-mysql-problem/136274>\
**Category:** Rails\
**Created:** [April 30, 2008, 9:58am UTC](https://www.ruby-forum.com/t/beginner-mysql-problem/136274 "2008-04-30T09:58:05Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![donald](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ac8455/32.png) [@donald](https://www.ruby-forum.com/u/donald)\
**Post date:** [April 30, 2008, 9:58am UTC](https://www.ruby-forum.com/t/beginner-mysql-problem/136274/1 "2008-04-30T09:58:05Z")

</div>

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  
def self.up  
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  
end  
end

def self.down  
drop\_table :people  
end  
end

and the error is:

# == ContactDb: migrating

– create\_table(“people”)  
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, `address`  
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.  
Any suggestions.

Thanks,  
Paul

---

<div class="post-metadata">

**Author:** ![donald](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ac8455/32.png) [@donald](https://www.ruby-forum.com/u/donald)\
**Post date:** [April 30, 2008, 4:39pm UTC](https://www.ruby-forum.com/t/beginner-mysql-problem/136274/2 "2008-04-30T16:39:59Z")

</div>

On Tue, Apr 29, 2008 at 11:31 PM, Donald [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ```
> t.column "id", :integer
> 
> ```

Rails adds an id field for you, unless you tell it not to. So leave  
yours out.

Also, you might check out the new column syntax for use with  
create\_table. You can do less now:

t.integer :name

for example.

–  
Greg D.  
[http://destiney.com/](http://destiney.com/)

---

<div class="post-metadata">

**Author:** ![donald](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ac8455/32.png) [@donald](https://www.ruby-forum.com/u/donald)\
**Post date:** [April 30, 2008, 4:43pm UTC](https://www.ruby-forum.com/t/beginner-mysql-problem/136274/3 "2008-04-30T16:43:35Z")

</div>

try it without id

---

<div class="post-metadata">

**Author:** ![donald](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ac8455/32.png) [@donald](https://www.ruby-forum.com/u/donald)\
**Post date:** [April 30, 2008, 4:47pm UTC](https://www.ruby-forum.com/t/beginner-mysql-problem/136274/4 "2008-04-30T16:47:54Z")

</div>

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?

thanks again

---

<div class="post-metadata">

**Author:** ![donald](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ac8455/32.png) [@donald](https://www.ruby-forum.com/u/donald)\
**Post date:** [April 30, 2008, 5:15pm UTC](https://www.ruby-forum.com/t/beginner-mysql-problem/136274/5 "2008-04-30T17:15:36Z")

</div>

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  
def self.up  
create\_table :people do |t|  
t.string :first\_name, :null =\> false  
t.string :last\_name, :null =\> false  
t.integer :organization\_id  
t.string :personal\_url  
t.string :voice\_number  
t.string :cell\_number  
t.string :email\_address, :null =\> false  
t.date :birth\_date  
t.text :notes  
end  
execute(“alter table people add constraint fk\_organizations foreign  
key (organization\_id) references organizations (id)”)  
end

def self.down  
drop\_table :people  
end  
end

HTH,

-Roy
