If, when working on a Linux machine of the Ubuntu flavor and setting up a PostgreSQL 9.3 database, you run into the error ‘PG::ConnectionBad: FATAL: Peer authentication failed for user’ when trying to connect to a database from a web application (Rails, PHP, Node, etc.), you are more than likely running into local socket connection permissions within PostgreSQL. The most common fix for this error in a development or staging environment is to loosen the local permissions up a bit.
1. locate the file ‘/etc/postgresql/9.3/main/pg_hba.conf’ and open it using sudo (sudo nano /etc/postgresql/9.3/main/pg_hba.conf)
2. scroll down through the file (almost to the bottom) until you find the section that starts with ‘# Database administrative login by Unix domain socket
3. directly below that you will find ‘local all all peer’ change it to ‘local all all trust’
4. save and close the file
5. restart the PostgreSQL server (sudo service postgresql restart)
If you have reference tables containing list data used to populate drop downs and selection controls in your UI, you may run into instances where you need to clear and repopulate these tables with updated data. But at the same time you may need to maintain the identity numbers when the table is repopulated to make sure that references from other tables remain correct. To accomplish this you need to make sure that your SQL scripts reset the table’s identity column back to 0 so that when the table is repopulated the first entry begins with 1 rather than 32. Here is an example:
DELETE FROM [UsState]
DBCC CHECKIDENT('UsState', RESEED, 0)
INSERT INTO [UsState] VALUES ('Alabama', 'AL');
INSERT INTO [UsState] VALUES ('Alaska', 'AK');
INSERT INTO [UsState] VALUES ('Arizona', 'AZ');
INSERT INTO [UsState] VALUES ('Arkansas', 'AR');
In MS SQL Server run the following query and an auto-generated identity column will be added to an existing table with existing data and each row will be automatically assigned an Integer in the new column.
alter table Example
add NewColumn int identity(1,1)
Easy way to loop through records in a table.
declare @cursor cursor, @customerID int
set @cursor = cursor for select CustomerId from StoreUpdates
fetch from @cursor into @customerID
if @@fetch_status 0
update Stores set Name = (select StoreName from StoreUpdates where CustomerId = @customerID) where CustomerId = @customerID;