Estoy usando JOOQ para acceder a una base de datos de Rails y, como saben, Rails tiene tres esquemas de base de datos, "prueba", "desarrollo" y "producción". Llamemos a estos esquemas TEST, DEV y PROD por ahora.
Ahora he generado código contra DEV con (casi) esta configuración en library.xml
<jdbc> <driver>com.mysql.jdbc.Driver</driver> <url>jdbc:mysql://<ip-address>:3306/data_dev</url> <user>secret</user> <password>secret</password> </jdbc>Me conecto usando un código como:
String url = "jdbc:mysql://" + db_host + "/" + db_schema + "?" + "user=" + db_user + "&password=" + db_pass; conn = DriverManager.getConnection(url); dsl = DSL.using(conn, SQLDialect.MYSQL);Ahora quiero ejecutar el código contra PROD, que tiene una estructura idéntica, pero por supuesto tiene datos de producción.
Sin embargo, incluso si cambio la URL de conexión al esquema PROD, parece que sigo accediendo al DEV. ¿El código generado está codificado en la base de datos DEV?
Estoy confundido sobre cómo proceder.
Aparentemente, puede cambiar la base de datos asignada en tiempo de ejecución.
https://www.jooq.org/doc/latest/manual/sql-building/dsl-context/runtime-schema-mapping/
Me perdí por completo esto en la documentación. Pero gracias por toda la ayuda de todos modos...