<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>My Ordinary Thoughts &#187; postgresql</title>
	<atom:link href="http://ordinarythoughts.org/tag/postgresql/feed/" rel="self" type="application/rss+xml" />
	<link>http://ordinarythoughts.org</link>
	<description>Thoughts about Java, Ruby, Cloud, Girls...</description>
	<lastBuildDate>Fri, 15 Apr 2011 08:51:50 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ordinarythoughts.org' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/627934b9ec505798cd9632bc79811c4d?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>My Ordinary Thoughts &#187; postgresql</title>
		<link>http://ordinarythoughts.org</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ordinarythoughts.org/osd.xml" title="My Ordinary Thoughts" />
	<atom:link rel='hub' href='http://ordinarythoughts.org/?pushpress=hub'/>
		<item>
		<title>Perypetie przy migracji z MySQL do PostgreSQL</title>
		<link>http://ordinarythoughts.org/2008/11/21/perypetie-przy-migracji-z-mysql-do-postgresql/</link>
		<comments>http://ordinarythoughts.org/2008/11/21/perypetie-przy-migracji-z-mysql-do-postgresql/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 17:18:27 +0000</pubDate>
		<dc:creator>Marek Goldmann</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://javavsme.wordpress.com/?p=60</guid>
		<description><![CDATA[Postanowiłem zmigrować moją aplikację służącą jako poligon na nową bazę danych. Dlaczego? Powód trywialny &#8211; chcę nabyć doświadczenie przy administracji inną bazą danych. Poza tym, podobno PostgreSQL jest całkiem dobrą bazą :) Niestety nie miałem okazji przyjrzeć jej się z bliska &#8211; czas to zmienić! Zainstalowałem PostgreSQL w najnowszej wersji 8.3.5. Super, bazę już mam. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ordinarythoughts.org&amp;blog=5520947&amp;post=60&amp;subd=javavsme&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Postanowiłem zmigrować moją aplikację służącą jako poligon na nową bazę danych. Dlaczego? Powód trywialny &#8211; chcę nabyć doświadczenie przy administracji inną bazą danych. Poza tym, podobno PostgreSQL jest całkiem dobrą bazą :) Niestety nie miałem okazji przyjrzeć jej się z bliska &#8211; czas to zmienić!</p>
<p>Zainstalowałem PostgreSQL w najnowszej wersji 8.3.5. Super, bazę już mam. Teraz trzeba się do niej podłączyć. Tylko jak? Google powiedziało, że jest graficzny interfejs zwiący się <a href="http://www.pgadmin.org/">pgAdmin</a>. Ściągnąłem, uruchomiłem i&#8230; No tak a jaki użytkownik i hasło? Przeglądając <a href="http://www.postgresql.org/docs/8.3/interactive/index.html">dokumentację</a> trafiłem na <a href="http://www.postgresql.org/docs/8.3/interactive/tutorial-createdb.html">komentarz</a> który naświetlił mi sprawę zarządzania użytkownikami.</p>
<p>Po założeniu odpowiedniego użytkownika i bazy danych postanowiłem się podłączyć za pomocą wcześniej wspomnianego pgAdmina. Po kilkukrotnych próbach wpisywania loginu i hasła, które za każdym razem były odrzucane przez serwer &#8211; dałem sobie spokój.</p>
<p>Znów kolej na dokumentację. Dowiedziałem się dzięki niej, że jest odpowiednik komendy <strong><code>mysql</code></strong>: <strong><code>psql</code></strong>. No to uruchamiam <strong><code>psql</code></strong> &#8211; zalogowałem się. Zdziwiłem się, że nie musiałem podawać hasła. Wykonałem parę przykładowych zapytań &#8211; działa. Hmm, tylko dlaczego nie działało z pgAdminem? No nic &#8211; spróbuję zmigrować aplikację.</p>
<p>Pobrałem <a href="http://jdbc.postgresql.org/download.html">najnowszy sterownik JDBC</a> i umieściłem go w katalogu z bibliotekami serwera JBoss (<strong><code>$JBOSS_HOME/server/[konfiguracja]/lib</code></strong>). Zmieniam dialekt Hibernate&#8217;a oraz plik *-ds.xml w którym znajdują się informacje w jaki sposób serwer ma połączyć się z bazą danych. Uruchamiam serwer &#8211; a może się uda :)</p>
<p>Nie, nie tym razem&#8230; Autoryzacja użytkownika nie przebiegła pomyślnie &#8211; otrzymałem komunikat: <strong><code>IDENT authentication failed for user "system"</code></strong>. Długo się zastanawiałem o co chodziło z tym słówkiem IDENT, aż trafiłem na <a href="http://www.susegeek.com/database/install-and-configure-postgresql-in-opensuse-110/">wpis w blogu</a> który mnie oświecił :) Okazało się, że domyślnym sposobem autoryzacji jest IDENT, co oznacza autoryzację użytkowników za pomocą protokołu identyfikacji (RFC 1413). Przy logowaniu lokalnych użytkowników za pomocą gniazd, baza danych autoryzuje użytkowników automatycznie. I taka jest odpowiedź na zagadkę dlacego nie musiałem podawać hasła chcąc się dostać do <strong><code>psql</code></strong>.</p>
<p>Aby umożliwić logowanie za pomocą hasła należy wyedytować plik <strong><code>/var/lib/pgsql/data/pg_hba.conf </code></strong>zamieniając każde wystąpienie słowa <strong><code>ident</code></strong> na <strong><code>md5</code></strong>. Po aktualizacji należy ponownie uruchomić serwer bazy danych.</p>
<p>Ponowiłem próbę uruchomienia aplikacji &#8211; tym razem błędy wystąpiły przy eksporcie schematu bazy danych. Okazało się, że słowo <strong>user</strong> jest <a href="http://www.postgresql.org/docs/8.3/interactive/sql-keywords-appendix.html">zastrzeżonym słowem kluczowym w PostgreSQL</a>. Szybka zmiana parametru <strong>name</strong> adnotacji <strong><code>@javax.persistence.Column</code></strong> przy odpowiednich polach pomogła.</p>
<p>Kolejnym problem unaocznił się podczas importu przykłądowych danych. <strong>PostgreSQL używa sekwencji!</strong> Musiałem zmienić sposób generowania kluczy głównych właśnie na sekwencje. Na szczęście JPA pozwala to w dosyć prosty sposób zrobić za pomocą adnotacji <strong><code>@javax.persistence.GeneratedValue(strategy = javax.persistence.GenerationType.SEQUENCE)</code></strong>, co nie zmienia faktu, że sama zmiana w wielu plikach zajęła mi trochę czasu.</p>
<p>Po kolejnym uruchomieniu okazało się, że zapomniałem przystosować przykładowe dane, które były importowane przy każdym uruchomieniu aplikacji na serwerze, do obsługi sekwencji. Po tej czynności aplikacja uruchomiła się poprawnie.</p>
<p><strong>Podsumowanie</strong></p>
<p>Czas stracony na szukaniu rozwiązań: 3 godziny, wiedza zdobyta przy okazji: bezcenna :)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/javavsme.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/javavsme.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/javavsme.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/javavsme.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/javavsme.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/javavsme.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/javavsme.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/javavsme.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/javavsme.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/javavsme.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/javavsme.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/javavsme.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/javavsme.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/javavsme.wordpress.com/60/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ordinarythoughts.org&amp;blog=5520947&amp;post=60&amp;subd=javavsme&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ordinarythoughts.org/2008/11/21/perypetie-przy-migracji-z-mysql-do-postgresql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e00cc70beb20a4a77809fd95b6f75ff2?s=96&#38;d=identicon" medium="image">
			<media:title type="html">goldmann</media:title>
		</media:content>
	</item>
	</channel>
</rss>
