当前位置: 首页 > 知识库问答 >
问题:

使用maven jooq代码插件,无需访问mysql数据库

李锦
2023-03-14

我们正在使用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>

当插件的生成目标被触发时,它会失败并出现以下错误:

 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]

请注意,use MYSQL_用户没有也不能访问MYSQL数据库。我们还有什么方法可以继续使用codegen插件吗?

更新:使用插件版本3.10.5的相同配置进行了尝试。没有错误。

共有1个答案

崔宜修
2023-03-14

除了访问information_schemamysql数据库之外,jOOQ没有其他方法可以对您的实时MySQL数据库进行逆向工程,这些数据库包含jOOQ代码生成器所需的元数据。

如果您不能向代码生成器用户授予必要的权限,那么相关的查询将根本不起作用。这种异常可以看作是表面现象,因为代码生成器随后将简单地跳过为存储html" target="_blank">过程生成代码。

您可以通过指定以下内容来关闭例程的生成:

<includeRoutines>false</includeRoutines>

有关详细信息,请参阅手册。

或者,当您可以专门为代码生成任务设置testcontainers数据库时,为什么要使用生产数据库来生成jOOQ代码?无论如何,您可能正在使用testcontainers或其他类似产品进行集成测试,因此为代码生成器设置模式不应该是太多额外的工作?

 类似资料:
  • 问题内容: 我正在寻找无需安装数据库服务器就可以运行SQL语句的数据库。即我需要仅给定数据库文件和任何外部库就能够选择/插入/更新数据库。 这是我的情况: 我正在使用C ++解析许多奇数格式的二进制文件,并且我想将它们存储到某种类型的数据库中,以提供对数据的更方便的访问。 将文件插入数据库后,我将使用C#编写界面/ GUI,用户可通过该界面/ GUI与数据库进行交互。 我使用C ++来提高读取文件

  • 我的Jenkins box需要通过REST API访问Stash和Jira。为此,我需要存储他们的凭据。 我的做法是通过Credentials参数,该参数要求我输入名称、凭据类型、必需、默认值和描述。 我将名称定义为CREDENTIAL_PARAMETER,在类型中我将其设置为“带有密码的用户名”,然后我从默认值中的列表中选择一个凭据。 接下来在构建部分中,我定义应该执行一个shell,这类似于

  • 我是mysql和php的初学者。在这个问题上陷入了困境。不知道问题出在哪里。但是如果我直接执行insert查询,它就会被执行,而如果我从用户那里接受它,它就不会被执行(代码中显示了这一点)。可能问题出在我用来检索用户提交的值的$\u POST[]方法上。我已经提交了两个代码,addbooks。php(用户提交值的表单)和add。php(插入数据库)。

  • 问题内容: 我正在尝试将Sonar添加到我的持续集成构建系统中。我使用ANT作为构建脚本,并使用sonar-ant- task-1.1.jar进行声纳生成基于我在SVN中的源代码的报告。 问题 当构建运行并执行声纳任务时,出现如下异常: 我做了什么 1. 安装MySQL数据库。 2. 使用声纳安装中提供的脚本创建声纳数据库,声纳用户并授予权限 3. 在我的构建脚本中添加了以下内容 4. 在Jenk

  • 主要内容:创建动作:,创建页面:,创建视图:,配置文件:本章将教如何使用Struts 2的简单的步骤来访问数据库。 Struts是一个MVC框架,而不是一个数据库框架,但它提供了极好的支持JPA/ Hibernate集成。我们将看看在的Hibernate集成在后面的章节,但在这一章中,我们将使用纯JDBC来访问数据库。 在这一章中的第一个步骤是设置我们的数据库。我作为我的数据库在这个例子中使用MySQL。在机器上安装MySQL,我创建了一个新的数据库称

  • 即使我的帐户可以访问SSMS中的db,并具有sysadmin权限。 检查SQL日志,每当登录失败时,我都可以看到这条消息: 我尝试向和添加,但没有什么不同 但我也试过 以同样的结果