簡體   English   中英

使用 maven jooq codegen 插件,無需訪問 mysql 數據庫

[英]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相同的配置。 沒有錯誤。

為什么jOOQ訪問mysql數據庫

除了訪問information_schemamysql數據庫之外,jOOQ 沒有其他方法可以對您的實時 MySQL 數據庫進行反向工程,其中包含 jOOQ 代碼生成器所需的元數據。

關閉例程生成

如果您無法授予您的代碼生成器用戶必要的授權,那么相關查詢將根本不起作用。 該異常可以被視為裝飾性的,因為代碼生成器將簡單地跳過為您的存儲過程生成代碼。

您可以通過指定以下內容來關閉例程的生成:

<includeRoutines>false</includeRoutines>

詳情請參閱手冊

改用本地測試數據庫

或者, 當您可以專門為代碼生成任務設置一個測試容器數據庫時,為什么要使用您的生產數據庫來生成 jOOQ 代碼? 無論如何,您很可能正在使用 testcontainers 或其他類似產品進行集成測試,因此為代碼生成器設置架構應該不會有太多額外的工作嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM