Postgresql ve TSearch2
Php Lucene üzerinde beklediğimi bulamadığım için Postgresql ve Tsearch2 ile ilgili araştırmalarıma yeniden başladım.
Veritabanıma tsearch2 özellikleri vermek istediğim için Postgresql contrib paketini yükledikten sonra
psql db_adi < /usr/share/postgresql/8.2/contrib/tsearch2.sql
şeklinde bir komut çalıştırmanın yeterli olacağını düşünüyordum. Ancak, bu komutu (benim gibi) postgres kullanıcısı olarak çalıştırmazsanız, büyük ihtimalle
ERROR: permission denied for language c ERROR: current transaction is aborted, commands ignored until end of transaction block
şeklinde bir hata alacaksanız. postgres kullanıcısı olarak çalıştırdığınızda tsearh2.sql çalışınca oluşacak yeni tabloların sahibi postgres olacağından bu seferde tablolar üzerinde değişiklik yapma imkanınız olmayacak. GRANT ALL gibi bir komut ile tablo sahipliğini veritabanı kullanıcısına versenizde bu durum değişmeyecek.
İşte çözüm; mevcut kullanıcınıza kullanıcı ekleme yani CREATEUSER hakkı vermek. Ne kadar doğru bir çözüm olduğunu tam olarak bilmiyorum ancak internette dolanırken bakındığım e-postalar arasında bir yerde gördüm, uyguladım ve tadaaa, çalışıyor.
Normal olarak postgresql’i ilk kurduğumda uygulamalarımda kullanmak bir kullanıcı oluşturmak istediğimde şu tarz bir betik kullanıyorum.
CREATE USER metoikos WITH PASSWORD 'hedehödö' CREATEDB;
Başta bu satıra CREATEUSER deyiminide ekleseydim sanırım sorun olmayacaktı. Benim gibi bu eklemeyi sonradan yapmak istiyorsanız işte komutlar…
metoikos@rocko:~$ sudo su [sudo] password for metoikos: root@rocko:/home/metoikos# su postgres postgres@rocko:/home/metoikos$ psql postgres=# ALTER ROLE metoikos CREATEUSER;
Ardından veritabanının normal kullanıcısı ile
metoikos@rocko:~$ psql test_tesarch < /usr/share/postgresql/8.2/contrib/tsearch2.sql SET BEGIN NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "pg_ts_dict_pkey" for table "pg_ts_dict" CREATE TABLE ....
Evet çalışıyor.






Yorumlar