Un enfoque para instalar Postgres en Windows 7 para usar como base de datos PostgreSQL para un proyecto de rieles 3 (3.0.7).
Preámbulo (puede omitir este bit)
Así que la primera cosa a destacar es que Postgres no es sólo una extensión de archivo diferente de .sqlite3, es todo un mecanismo de gestión de bases de datos . Como tal, tiene un modelo cliente/servidor, del cual deberá configurar ambos para usar Postgres como base de datos para su aplicación de rieles.
Motivo para superar la configuración de Postgres frente a la configuración sqlite casi sin esfuerzo: si está implementando en Heroku, actualmente están utilizando Postgres para que algunas de sus llamadas SQL que están bien en sqlite3 se rompan cuando se usan con Postgres . Es mucho más fácil depurar postgres localmente que cuando está en los servidores de Heroku.
Así que hice las siguientes cosas: (Descargo de responsabilidad: puede que me haya olvidado de incluir algunas de las cosas que hice ... me tomó más de 48 horas de esfuerzo para que funcionase ... si el siguiente consejo no funciona para usted, entonces el enorme (¡2300 páginas!) pero very thorough Postgres documentation debería ayudar. Recomiendo descargar esto de todos modos si realmente quiere usar Postgres, ya que tiene un montón de material que solo he usado. recién empecé a comprender el significado de.) (Segundo descargo de responsabilidad: casi seguro que he roto 20 pautas sensatas de Postgres y agujeros de seguridad expuestos en la base de datos de Postgres al hacerlo. Si hay alguna cosa obvia con la que un usuario experimentado de Postgres no esté de acuerdo, edite mi publicación)
Etapa 1. Descargar e instalar PostgreSQL v9.0.4-1 de here porque here única 9.0.x sería compatible con Windows 7. dijo Seguí todas las opciones por defecto y 'secreto' solo se utiliza como contraseña cuando el instalador de Postgres lo solicite (de nuevo no estoy del todo seguro de cuáles son las consecuencias de compartir esa información en Internet ... pronto sabré que estoy seguro). Usted necesitará esta contraseña en el paso 3.
Etapa 2. variables de cambiar el medio ambiente de tal manera que la trayectoria (for system, not user (no estoy seguro si esto es o no significativo)) es: C:\Program Files\PostgreSQL\9.0\bin
(NB I Estoy en las ventanas de 64 bits por lo que no se instala para 32 bits en 'C: \ Archivos de programa (x86) \ PostgreS ...')
No olvides cambiar los derechos de acceso a la carpeta PostgreSQL \ 9.0 y elimine cualquier derecho de solo lectura predeterminado en la carpeta o el contenido. (También es posible que deba reiniciar su computadora para que esto surta efecto, gracias @Gavin, aunque no es probable).
Etapa 3. instalación de Postgres prueba al tratar de crear una nueva base de datos: Desde la línea de comandos: createdb -U postgres mydb_as_postgres
. Se le debe pedir que ingrese la contraseña ahora; si no es así, es posible que deba iniciar el servidor primero (no recuerdo si necesité hacer esto o no). La forma más fácil es a través de pgAdmin III, que debe ser 'pgAdmin3.exe' en una carpeta en algún lugar como C:\Program Files\PostgreSQL\9.0\bin
. Una vez que haya iniciado pgAdmin III, debe haber un panel a la izquierda llamado 'Object Browser'. En esto debería haber un árbol con:
Grupos de servidores> Servidores> PostgreSQL 9.0 (localhost: 5432)
Haga clic con el botón derecho en 'PostgreSQL 9.0 (localhost: 5432)' y seleccione 'Conectar'.
El comando createdb -U postgres mydb_as_postgres
debe crear un nuevo databse llamado 'mydb_as_postgres' que puede verificar activando pgAdmin III y haciendo doble clic en 'PostgreSQL 9.0 (localhost: 5432)'. Bajo este no debería ser:
Databases (2)
que debe enumerar 2 bases de datos llamados mydb_as_postgres
y postgres
lo llamé _as_postgres
porque la parte -U postgres
de la orden le dice Postgres para crear la base de datos con el usuario postgres ya que es propietario, el cual debe especificar cuándo no inició sesión como usuario de Postgres. Tengo todos mis archivos almacenados como usuario de 'AJames', así que si eres el mismo y quieres seguir desarrollando tu aplicación cuando inicias sesión como un usuario diferente, entonces necesitas crear una 'función' de Postgres para ese usuario (ver paso 4).
. Paso 4. A través de pgAdmin III. Haga clic en Roles Iniciar sesión (que para mí está en): Navegador
Objeto> Grupos de servidores> Servidores> PostgreSQL 9.0 (localhost: 5432)> Login Roles
Haga clic en Roles de Usuario y seleccione 'Nuevo Función de inicio de sesión ... ' en Nombre del rol, ingrese el nombre de usuario de su sistema operativo, que para mí es AJames, y complete su contraseña en la pestaña' Derechos de función ', he marcado todos los cuadros, pero un usuario experimentado de postgres probablemente recomiendo comprobar solo 'hereda los derechos de los roles principales' y 'puede crear objetos de base de datos' Pero no soy un usuario experimentado y solo quiero depurar las llamadas SQL de Rails en Postgres, así que también revisé el 'Superusuario' y 'Puede crear roles', por las dudas.
. Paso 5. Ahora debería poder crear una nueva base de datos sin haber iniciado sesión como usuario de postgres. Pruebe a escribir:
createdb mydb_as_user
Esperamos que esto debería funcionar para usted.
. Paso 6. Bien, entonces tiene un archivo development.sqlite3 en el directorio 'db /' de su riel. Inicialmente iba a establecer la próxima prueba como convertir esto de sqlite3 a psql.
No pude hacer que esto funcione, pero dejé mis intentos aquí porque la solución que utilicé requería tener los datos en una aplicación de Rails en Heroku.com (ver la solución del paso 7 en adelante). Para aquellos que solo tienen una aplicación local y no tienen datos en Heroku, no pueden usar el mismo enfoque, por lo que es posible que necesiten explorar algo como esto:
x6.1 Primero, pruebe 'psql' intentando un comando desde la línea de comandos como:
psql mydb_as_user
esto debería mostrar algo parecido a continuación (después de que ha escrito en su contraseña):
C:>psql mydb_as_user
Password:
psql (9.0.4)
WARNING: Console code page (850) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
mydb5=#
x6.Entrada de 2 intento:
CREATE TABLE users_table (id integer, "name" text);
Debe mostrar:
CREATE TABLE
mydb5=#
Si marca en pgAdmin III, debería ver la tabla existe en:
objeto de navegador> Grupos de servidores> Servidores > PostgreSQL 9.0 (host local: 5432)> Bases de datos> mydb_as_user> Esquemas> público> Tablas> tabla_de_usuarios>
x6.3 De acuerdo, junto a t la conversión Downloaded sqlite-shell binario precompilado para windows.
x6.4 Crear un nuevo directorio, utilicé 'C: \ temp' y coloque el archivo sqlite3.exe y sus archivos development.sqlite3 en él.
x6.5 Utilice los siguientes comandos (que son de here) para volcar la base de datos development.sqlite3 en Postgres.
sqlite3 development .dump | psql development2
es posible que obtenga un error como:
psql: FATAL: database "development2" does not exist
x6.6 así que entré en pgAdmin III e hice una base de datos de desarrollo 2, probado el comando de nuevo y tengo:
ERROR: syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign_keys=OFF;
^
BEGIN
COMMIT
Como dije, no pude hacer que funcione. Estoy seguro de que hay una forma de eludir ese error, pero pensé en una forma diferente y en su lugar usé esta solución (que requiere una cuenta Heroku para tener sus datos y la conversión de sqlite3 a psql usando la gema Taps (I creen):
Etapa 7. en pgAdmin III creé otra base de datos en la pestaña propiedades puse nombre:. 'desarrollo', propietario:. '' (AJames sustituir esto con su propio nombre de usuario de Windows) Y bajo la etiqueta de privilegios, establecer el papel: 'público' y seleccionado la opción ALL (considera que la restablece a desmarcado así que no estoy seguro de que sea necesario)
Etapa 8. añadir . 10 a su archivo gema. Probablemente también desee eliminar el: gem 'sqlite3'
en este punto también.
Etapa 9. conjunto database.yml como suggested here a:
development:
adapter: postgresql
database: db/development
username: AJames # replace this with your own user name
password: secret # replace this with your own password
host: localhost
encoding: UTF8
pool: 5
timeout: 5000
Si usted está trabajando en un proyecto de código abierto y no desea que su clave para ingresar a disposición del público, a echar un vistazo en algunas de las respuestas a Securely providing the database password in a Rails app.
Etapa 10. de línea de comandos en ejecución directorio raíz de su raíles de aplicación: rake db:migrate
Esto creará el nuevo esquema y todas las tablas de la base de datos PostgreSQL.
. Paso 11. plazo heroku db:pull
desde la línea de comandos (otra vez de en el directorio raíz de la aplicación de los carriles) para tirar de todos sus datos abajo y en su nueva base de datos PostgreSQL vacía. Creo que en este punto tu joya de taps hará este trabajo por ti.
Etapa 12. Con suerte no hay paso 12! ... y ahora debería estar funcionando para ti. ¡Eliminación feliz de RoR PostgreSQL! Edita o avísame si hay algún error al respecto.
Además, aquí es una lista de cosas adicionales que podría ser interesante/útil:
- Este es un blog post about Postgres passwords, para qué sirven, por qué los necesita, cómo cambiarlos etc.
- This, under 'Creating a spatial database', is useful for newbies to understand what pg_hba.conf is about y the second link that Reno gave above, bajo el 'Uso de GUI pgAdmin III' es útil para pruebas para ver si postgres está trabajando realmente, antes de tratar de encajar con rieles (es decir, tratar de crear una base de datos y poner una mesa y algunos datos en él)
- En el huge but very comprehensive Postgres documentation, me inicio en la página 58, 'I. tutorial'. Luego en la página pdf 431 (!) Hay 'Capítulo 17. Configuración y operación del servidor' que también encontré útil.
simplemente he instalado PostgreSQL desde https : //postgrespro.com/windows, todas las demás configuraciones: la forma más común. – prograils