![](/img/trans.png)
[英]jOOQ Codegen with different MySQL DBs for dev, test and prod
[英]Using maven jooq codegen plugin without the access to mysql database
我們正在使用 jooq codegen 插件為 MySQL 數據庫之一生成 dao 和 pojo 類。 配置如下:
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>3.14.3</version>
<configuration>
<jdbc>
<driver>com.mysql.jdbc.Driver</driver>
<url>MYSQL_HOST</url>
<user>MYSQL_USER</user>
<password>MYSQL_PASSWORD</password>
</jdbc>
<generator>
<database>
<includes>some_db.*</includes>
</database>
<generate>
<daos>true</daos>
<pojos>true</pojos>
</generate>
<target>
<packageName>mysql</packageName>
<directory>target/generated-sources</directory>
</target>
</generator>
</configuration>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
當插件的 generate 目標被觸發時,它會失敗並出現以下錯誤:
Error running jOOQ code generation tool: Error generating code for catalog: org.jooq.exception.DataAccessException: SQL [select mysql.proc.db as ROUTINE_SCHEMA, mysql.proc.name as ROUTINE_NAME, mysql.proc.comment as ROUTINE_COMMENT, mysql.proc.param_list, mysql.proc.returns, mysql.proc.type as ROUTINE_TYPE from mysql.proc where mysql.proc.db in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) order by 1, 2, 6]; SELECT command denied to user 'MYSQL_USER'@'some_ip' for table 'proc' -> [Help 1]
請注意,使用 MYSQL_USER 沒有也無法訪問mysql
數據庫。 有沒有辦法讓我們仍然可以提前 go 並使用 codegen 插件?
更新:嘗試使用與插件版本3.10.5
相同的配置。 沒有錯誤。
mysql
數據庫除了訪問information_schema
和mysql
數據庫之外,jOOQ 沒有其他方法可以對您的實時 MySQL 數據庫進行反向工程,其中包含 jOOQ 代碼生成器所需的元數據。
如果您無法授予您的代碼生成器用戶必要的授權,那么相關查詢將根本不起作用。 該異常可以被視為裝飾性的,因為代碼生成器將簡單地跳過為您的存儲過程生成代碼。
您可以通過指定以下內容來關閉例程的生成:
<includeRoutines>false</includeRoutines>
或者, 當您可以專門為代碼生成任務設置一個測試容器數據庫時,為什么要使用您的生產數據庫來生成 jOOQ 代碼? 無論如何,您很可能正在使用 testcontainers 或其他類似產品進行集成測試,因此為代碼生成器設置架構應該不會有太多額外的工作嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.