mysql链接出现: No operations allowed after statement closed.

作者&投稿:华娜 (若有异议请与网页底部的电邮联系)
MySQL 批处理时:No operations allowed after statement closed~

有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)

我遇到过这个问题 把连接数据库的方法转为非静态方法通常是你改了DB.java里的东西吧

之所以会出现这个异常,是因为Mysql在5以后针对超长时间DB连接做了一个处理,那就是如果一个DB连接在无任何操作情况下过了8个小时后,Mysql会自动把这个连接关闭。所以使用连接池的时候虽然连接对象还在但是链接数据库的时候会一直报这个异常。解决方法很简单在Mysql的官方网站上就可以找到。
有两个方法,
第一种是在DB连接字符串后面加一个参数。
这样的话,如果当前链接因为超时断掉了,那么驱动程序会自动重新连接数据库。

jdbc:mysql://localhost:3306/makhtutat?autoReconnect=true

不过Mysql并不建议使用这个方法。因为第一个DB操作失败的后,第二DB成功前如果出现了重新连接的效果。这个失败操作将不会处于一个事务以内,第二DB操作如果成功的话,这个事务将被提交。

conn.createStatement().execute(
"UPDATE checking_account SET balance = balance - 1000.00 WHERE customer='Smith'");
conn.createStatement().execute(
"UPDATE savings_account SET balance = balance + 1000.00 WHERE customer='Smith'");
conn.commit();

当然如果出现了重新连接,一些用户变量和临时表的信息也会丢失。
另一种方法是Mysql推荐的,需要程序员手动处理异常。
[java] view plaincopyprint?
<span style="font-family:Microsoft YaHei;font-size:12px;">public void doBusinessOp() throws SQLException {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
int retryCount = 5;
boolean transactionCompleted = false;
do {
try {
conn = getConnection(); // assume getting this from a
// javax.sql.DataSource, or the
// java.sql.DriverManager
conn.setAutoCommit(false);
retryCount = 0;
stmt = conn.createStatement();
String query = "SELECT foo FROM bar ORDER BY baz";
rs = stmt.executeQuery(query);
while (rs.next()) {
}
all.close()
transactionCompleted = true;
} catch (SQLException sqlEx) {
String sqlState = sqlEx.getSQLState();
// 这个08S01就是这个异常的sql状态。单独处理手动重新链接就可以了。
if ("08S01".equals(sqlState) || "40001".equals(sqlState))
{
retryCount--;
} else {
retryCount = 0;
}
} finally {
all close:
}
} while (!transactionCompleted && (retryCount > 0));}
}</span>

这个没问题, 能帮忙解决一下的哦
能否看看wo 的网名的啊?帮忙搞定一下啊


连接MySQL出现2013错误解决
环境:Navicat for Mysql 8.2 MySQL Sever 5.1 问题:使用Navicat for Mysql连接MySQL出现如下错误:2013-Lost connection to MySQL server at ‘reading initialcommunication packet’,system error:0。如图: 解决: 重启MySQL服务---重新连接。 附:环境:Navicat for Mysql 8.2+ MySQL Sever 5.1...

mysql链接出现: No operations allowed after statement closed...
第一种是在DB连接字符串后面加一个参数。这样的话,如果当前链接因为超时断掉了,那么驱动程序会自动重新连接数据库。jdbc:mysql:\/\/localhost:3306\/makhtutat?autoReconnect=true 不过Mysql并不建议使用这个方法。因为第一个DB操作失败的后,第二DB成功前如果出现了重新连接的效果。这个失败操作将不会处于一...

解决MySQL连接问题如何应对一直等待链接的情况mysql一直等待链接
在服务器端,我们可以通过调整MySQL的配置参数来优化其性能和稳定性。例如,可以通过增加max_connections参数来应对连接量过大,或者增加wt_timeout参数来减少连接超时等问题。3.优化客户端设置 在客户端,我们也可以通过设置一些参数来优化和控制MySQL的连接行为。例如,可以通过设置connect_timeout参数来减少...

MySQL连接总是出现BAD HANDSHAKE是怎么回事
1、安装好MySQL和Navicat之后,打开Navicat,然后点击“连接”菜单。2、Navicat 是通过连接来设计数据库以及操作数据库的,所以起一个 连接名称,然后设置好主机端口等,默认的用户名是root,密码是空。如果你设置有密码就输入密码。3、测试这个链接是否有用,点击“连接测试”按钮开始测试。4、连接有效,如...

mysql数据库连接出现错误?
1、首先在mysql数据库连接时碰到Warning: mysql_fetch_array() expects ...错误提示,根据我的经验这个是sql返回的query为空了,我们没有加己判断直接使用了。mysql_fetch_array()函数导致的。2、然后会出现提示错误了:Warning: mysql_fetch_array() expects parameter 1 to be resource。boolean given ...

连接Mysql时出现IP不正确怎么办
1. 检查一下MySQL连接参数配置,连接参数中主机地址写的是IP还是机器 名;2. 检查MySQL服务器是否是动态获取IP,如果是,那客户端连接时,如果按IP联接,就有可能出现IP不正确的情况。3. 检查MySQL服务器,看服务是否经常停机;如果是这个问题保证服务稳定即可。建议连接池参数写IP,然后服务器设置固定IP...

IDEA2019.2链接MySQL数据库以及问题解决
在使用IDEA链接MySQL时,可能遇到java.sql.SQLException问题,这是由于配置过程中的一个常见错误。首先,确保在IDEA中正确安装了MySQL驱动。接着,配置数据库连接信息,这包括数据库的主机地址、端口、用户名和密码。若在尝试连接时遭遇java.sql.SQLException,这通常意味着连接信息存在问题。检查my.ini文件中...

MySQL出现1130错误的解决办法mysql中出现1130
MySQL服务器的配置文件可能会因为各种原因被修改,导致出现1130错误。我们可以通过以下步骤检查MySQL服务器配置文件:1. 使用以下命令查找MySQL配置文件:sudo find \/ -name my.cnf 2. 找到my.cnf文件后,用文本编辑器打开文件,检查其中是否有错误或者不需要的配置项。如果有,可以将其注释或者删除。3. ...

tableau连接mysql时,出现无法连接服务器,检查服务器是否正在运行以及您...
当在Tableau中连接MySQL数据库时出现“无法连接服务器,检查服务器是否正在运行以及您是否有权访问”等错误提示时,可能是以下原因之一:1.MySQL服务器没有运行:请确认MySQL数据库服务器是否已经启动。可以检查MySQL的状态或者重启MySQL服务,看是否能够正常连接。2.MySQL数据库没有正确配置端口:请确保已经...

连接mysql数据库出现2003-Can't connect to MySQL server on 'localho...
无法连接到 MySQL 服务器,可能的情况为:1、MySQL 服务没有启动,一般是在异常的情况下 MySQL 无法启动导致的,比如无可用的磁盘空间,my.ini 里 MySQL 的 basedir 路径设置错误等;2、MySQL 服务器资源紧张,导致无法连接。

卧龙区15341258315: mysql老是出现no connection,上一次还好用,再进去就no connection,重装才能再用,请问是怎么回事? -
仇由例祛风: 你的mysql服务没有开启吧. 电脑的运行会吧? 输入 services.msc 可以查看mysql服务是否开启了. 或者进入 cmd 命令行 通过 net start | stop mysql 可以开启或者关闭mysql C:\Users\Administrator>net stop mysql MySQL 服务正在停止..MySQL 服务已成功停止.C:\Users\Administrator>net start mysql MySQL 服务正在启动 ..MySQL 服务已经启动成功.C:\Users\Administrator>

卧龙区15341258315: 连接数据库时出现java.lang.ClassNotFoundException: com.mysql.jdbc.Driver怎么修改 -
仇由例祛风: 应该是你的数据库连接的jar包没有正确的导入, 1、没有导入包 2、导入的包的路径是不对的 就是将mysql的jar包放到你的lib目录下就可以了,可以通过build path--》add external library或是直接将jar包直接复制到lib目录下就可以了.

卧龙区15341258315: 连接数据库出错了 请问这是什么错误?怎么解决? 谢了! -
仇由例祛风:1、最普遍的原因是匿名用户帐号(IUSR_MACHINE)对该数据库文件没有写权限. 要解决这个问题,在管理器中调整数据库文件的属性,让匿名用户有正确的权限....

卧龙区15341258315: 连接mysql提示net work error? -
仇由例祛风: net work error错误是指网络错误,或者是端口错误.可以从以下几个方面去排查1. 检查你连接mysql的ip正确,如果正确在ping一下,如果ping不同,则说明网络不通,检查你的网段是否一致.2. 如果能ping通,检查mysql安装机器的防火墙(windows)或者端口是否开放(linux).这时候可以在mysql服务器上直接链接mysql试一下.3. 如果mysql服务器上能连接成功,并且防火墙,端口都开放,在检查下账户名或者密码,不够这种情况一般都不会报network error,报的都是access denied这样的错误

卧龙区15341258315: mysql连接失败 -
仇由例祛风: 你这个是你自己在网上找的吧,你先确认mysql安装好没,以及确定包是否加载到对应的位置,配置URL后面是链接地址加实例名我给你截了个图,

卧龙区15341258315: cannot connect to mysql server on localhost是怎么回事 -
仇由例祛风: 翻译过来就是本地mysql数据库连接错误,你以localhost也就是本地身份登不上去,看看是不是服务没启动起来,或者在前面加上 -hlocalhost试试,希望能帮到你

卧龙区15341258315: error info:MYSQL 连接数据库失败,请确定数据库用户名,密码设置正确 -
仇由例祛风: 一到晚上就经常报错,那首先应该查看mysql日志,看晚间mysql数据库在执行哪些操作时报错.原因可能是晚间链接数过多导致数据库性能下降,或晚间执行了大批量的批处理操作影响等等.主要分析报错期间数据库的行为.

卧龙区15341258315: navicat for mysql连接不上mysql,连接时出现Unknow Mysql server host"locaihost" -
仇由例祛风: 是想连接你的电脑的本地数据库把.连接数据库必须要连接一个网络.用手机开热点连接都行. 这样就可以连接本地数据库.如果是想连接学校的数据库,那就要连到学校的网络上.

卧龙区15341258315: 连接mysql出错. -
仇由例祛风: 1. 改表法.可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" ...

卧龙区15341258315: mysql数据库新建连接时出现问题 -
仇由例祛风: 解决办法: 第一步 删除c:\windows\下面的my.ini 第二步 打开c:\mysql\bin\winmysqladmin.exe 输入用户名 和密码 第三步 在dos下 输入 mysqld-nt -remove 删除服务 在接着输入 mysqld-nt -install 第四步 输入mysql 启动成功. 其它可参考的方法: ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网