Posted by Chirag Patel on August 20, 2007
Install
After installing PostgreSQL on Windows, I converted my Rails application from MySQL to PostgreSQL with the following steps:
- Create a new database in PostgreSQL
- Installed
postgres-pr gem (Ruby driver) because the postgres gem (native driver) didn’t work. Will figure out why later on.
- Changed the appropriate Rails config stuff in
database.yml
development:
adapter: postgresql
database: database_name
username: postgres
password: password
host: localhost
- I ran only my first Rails migration to test that it worked using this command:
rake db:migrate VERSION=1. My first migration (001_create_heartrates.rb) creates a table in the database so it will be easy to test.
Robby explains a quick way to migrate the data as well
Test
You can test that the migration worked via 2 methods (GUI or command line)
- Using following commands with the
psql command line utility (Start Menu -> PostgreSQL -> psql to postgres):
| psql commmand |
Description |
\? |
help |
\c database_name |
connect to a database (many other commands won’t work until you execute this) |
\dt |
show tables (execute \c first) |
\d table_name |
describes a particular table (e.g. table_name) |
- Using the pgAdmin III GUI:
- The database table is deeply nested in the tree, I missed it at first. Go to
PostgreSQL Database Server 8.2 -> Databases -> database_name -> Schemas -> public -> Tables -> table_name
Posted in PostgreSQL, Ruby on Rails | Leave a Comment »
Posted by Chirag Patel on August 20, 2007
I wanted to quickly create a new database via pgAdmin III, so I used the following properties
Note: initdb (which ran during step 6 of the installation process) creates two initial databases, namely postgres and template1. Also, the cluster created by initdb also comes with two templates (template0 and template1). template0 is a backup for template1.
| Setting |
Value |
Description |
| Owner: |
postgres |
I assume postgres refers to the database superuser, not the Windows login. |
| Encoding: |
UTF8 |
Because a PostgreSQL dialog box suggested it would be most flexible in case other clients decided to access the data (instead of SQL_ASCII) |
| Template: |
template1 |
schema extensions and objects are usually loaded into template1 |
| Tablespace: |
pg_default |
The pg_default tablespace is the default tablespace of the template1 and template0 databases (and, therefore, will be the default tablespace for other databases as well, unless overridden by a TABLESPACE clause in CREATE DATABASE).Tablespaces in PostgreSQL allow database administrators to define locations in the file system where the files representing database objects can be stored. Two tablespaces are automatically created by initdb .
- The
pg_global tablespace is used for shared system catalogs.
- The
pg_default (described above)
One of the things that the tablespace defines is the file path for the data as shown with this command: CREATE TABLESPACE fastspace LOCATION '/mnt/sda1/postgresql/data'; |
Posted in PostgreSQL | 3 Comments »