Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查是否可以插入MySQL数据库_Java_Mysql_Spring - Fatal编程技术网

Java 检查是否可以插入MySQL数据库

Java 检查是否可以插入MySQL数据库,java,mysql,spring,Java,Mysql,Spring,假设我正在使用的数据库崩溃或出现任何其他错误,阻止我对其调用INSERT。在那之后,我想知道对数据库的访问何时返回。我想做的是每隔x秒检查我们是否有访问权限(为了简单起见,每1秒检查一次)。我不想重复说明-我只需要知道数据库是否可用 请记住,我不仅需要知道数据库是否已启动。我还需要知道我们是否有权使用它,总体而言,我们是否有权在特定表上调用INSERT 如何使用Java以最干净的方式(一般来说,代码量最少)实现这一点?目前我正在使用Spring的JpaRepository如果您事先知道这是一项表

假设我正在使用的数据库崩溃或出现任何其他错误,阻止我对其调用
INSERT
。在那之后,我想知道对数据库的访问何时返回。我想做的是每隔
x
秒检查我们是否有访问权限(为了简单起见,每1秒检查一次)。我不想重复说明-我只需要知道数据库是否可用

请记住,我不仅需要知道数据库是否已启动。我还需要知道我们是否有权使用它,总体而言,我们是否有权在特定表上调用
INSERT


如何使用Java以最干净的方式(一般来说,代码量最少)实现这一点?目前我正在使用Spring的
JpaRepository

如果您事先知道这是一项表级授权,您可以查询信息\u schema.table\u privileges表:

如果是架构级别的授权,请使用:

select * from schema_privileges where privilege_type = 'INSERT';

无论如何,正确的做法是在基地解决问题。在表上拥有insert权限后,不必担心会失去这些权限,除非是有意撤销的。为什么助学金正在消失?这很奇怪,因为授权是持久的。

如果您事先知道它是表级授权,您可以查询信息\u schema.table\u privileges表:

如果是架构级别的授权,请使用:

select * from schema_privileges where privilege_type = 'INSERT';


无论如何,正确的做法是在基地解决问题。在表上拥有insert权限后,不必担心会失去这些权限,除非是有意撤销的。为什么助学金正在消失?这是非常奇怪的,因为授权是持久的。

我们的方法是在线程中执行
select
查询
select
不会告诉您是否可以
插入表中。我们还需要知道我们是否有
insert
@dan1st的特权,你的意思是-尝试每隔1秒
insert
?当它成功时-删除我们插入的记录?对于可能导致性能下降的更大查询(jdbc也在jpa中工作)的可能重复@Rasmond:您对表的权限是否会在运行时发生变化??如果没有,我建议您可以首先检查并全局存储它。我们的方法是在线程中执行
select
查询
select
不会告诉您是否可以
insert
到表中。我们还需要知道我们是否有
insert
@dan1st的特权,你的意思是-尝试每隔1秒
insert
?当它成功时-删除我们插入的记录?对于可能导致性能下降的更大查询(jdbc也在jpa中工作)的可能重复@Rasmond:您对表的权限是否会在运行时发生变化??如果不是的话,我建议你可以先检查一下,然后在全球范围内存储。它似乎真的不起作用<代码>信息\u架构。表\u权限
为空,则可以在回答中提到的其他表上找到插入权限。schema_特权应该包含一个带有用户名、特权类型和数据库名称的记录。该表是schema/db的一部分,用户对该schema/db有插入权限。*(该db的所有表)答案中的查询不够详细,它们只是显示在何处查找插入授权信息,而没有有效地尝试插入记录以了解您是否可以实际插入。
IS\u GRANTABLE
当前是
NO
对于每个单独的权限,我猜IS\u GRANTABLE意味着“用户可以将权限授予其他用户”。您需要知道用户是否可以插入到某个表中。如果schema_privileges有一行包含db名称、用于连接的用户和insert权限,那么您可以执行insert操作。这似乎不起作用<代码>信息\u架构。表\u权限为空,则可以在回答中提到的其他表上找到插入权限。schema_特权应该包含一个带有用户名、特权类型和数据库名称的记录。该表是schema/db的一部分,用户对该schema/db有插入权限。*(该db的所有表)答案中的查询不够详细,它们只是显示在何处查找插入授权信息,而没有有效地尝试插入记录以了解您是否可以实际插入。
IS\u GRANTABLE
当前是
NO
对于每个单独的权限,我猜IS\u GRANTABLE意味着“用户可以将权限授予其他用户”。您需要知道用户是否可以插入到某个表中。如果schema_privileges有一行包含db名称、用于连接的用户和insert权限,则可以执行insert。