Heroku db id Starting with 1000

Hello All,

How do I change the heroku database( already existed ) table id to start from say 1000?

I tried with a fresh database on local & it works with this:-

execute “ALTER users orders AUTO_INCREMENT = 1000”

Thanks,

Avinash

Hello All,

How do I change the heroku database( already existed ) table id to start from say 1000?

I tried with a fresh database on local & it works with this:-

execute “ALTER users orders AUTO_INCREMENT = 1000”

Sorry - this query - execute “SELECT setval(‘users_id_seq’, 1000)”

The above query is db already existed.

Don't bother. You should never care what the id is for a record, it will just make life difficult if you do. If you want a column with a meaningful number in it then add an extra column rather than using the id.

Colin

The main reason I am doing this is :-

I am uploading some images to s3 amazon.

I am saving those images in s3 through rake script.

I have two tables having images.

Both are saving in one folder in s3.

I want to save those based on ids, so that there will not be any conflict.

The main reason I am doing this is :- I am uploading some images to s3 amazon. I am saving those images in s3 through rake script. I have two tables having images. Both are saving in one folder in s3. I want to save those based on ids, so that there will not be any conflict.

I don't understand what you mean, do you mean you have two tables and want to keep the ids of the two tables distinct from each other? If so then that is a bad idea, it will be sure to cause you problems at some time in the future. A better idea might be to have a third table (images) that manages all the images and has a relationship to the other tables. Possibly polymorphic (see

).

Colin

The main reason I am doing this is :- I am uploading some images to s3 amazon. I am saving those images in s3 through rake script. I have two tables having images. Both are saving in one folder in s3.

Do you mean they are being saved to the same bucket? Or do you mean a path under the bucket? S3 has it's own very unique method of storage. But you can easily store things in the same bucket, but specify a path-like prefix:

s3://mybucket/table1/image-n.jpg s3://mybucket/table2/image-n.jpg

table1 and table2 aren't really folders in S3, but they're good enough emulation to consider that for most uses.

I want to save those based on ids, so that there will not be any conflict.

As stated, don't rely on the record ID in your database. Create a unique id for each image if you'd like, and use that to tag it, if that's how you want to go.

So, my requirement is :-

I have an Image table & a related_image table.

image has_many related_images.

& related_images belongs to many images.

Those images in both the tables are in sequence(we can change the sequence- That will be a problem in case of belongs to many images).

So, this seems to be a better option to save images as id.

In s3, I am saving both the images(images & related_images) in one folder as .png or .jpg

After saving into s3, there are some other process to do like creating .plist file from the json objects & others. Here I require those data from s3.

I was getting an interesting issue with heroku.

I was doing a db:reset & set the default id to start with 1000 & 10000 respectively.

It was working for the first time. If I do again a db:reset it goes. It starts from 1.

I fixed it by adding migration file with :-

def change

execute “SELECT setval(‘images_id_seq’, 1000)”

end

def change

execute “SELECT setval(‘related_images_id_seq’, 10000)”

end

& on console by :- heroku pg:reset DATABASE --confirm MY_APP_NAME

So, now every time I reset, I need to run the migration & it works.

Are images also capable of being related images? And vice versa?

I can't say I exactly follow what you want, but I still suggest not to use the id. Using the id causes problems as you have found out. Instead simply add another field (image_id for example) and set it to whatever values you want, independent of the id.

Colin