Hola TyantRC
mysql no es lo mismo que postgresql.  
 Cita:  No se si es el if not exists el que me da problema ...
    En realidad está clausula es particular de mysql y no corresponde a SQL estandar. Pero para eso, basta con que le quites la clausula y pruebes tu mismo si te funciona o no. 
Ojo con el auto_increment. Para postgresql busca información del tipo de dato serial (Aunque realmente no sea un tipo de dato) 
saludos