- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在大学里,我的练习是用 Java 开发多人游戏。客户端之间的通信不应使用套接字等进行处理,而是借助客户端在游戏中添加步骤的 MySQL 数据库。因为是骰子游戏,所以不需要很多查询。 (每个游戏 session 大约需要 30 个查询)。
我以前从未将 MySQL 与 Java 结合使用,所以这可能是初学者的错。但实际上,我在执行 java 项目时经常遇到异常。
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: User my_username already has more than 'max_user_connections' active connections
我的查询是在 DatabaseHelper.java 类中执行的。结果返回并在项目的另一个类中进行评估。因为我使用 MVC 模式,所以我在 Controller 或模型类中评估结果。
例如,这是我在 DatabaseHelper.java 类中的一个问题。其他查询类似:
private static Connection conn;
private Connection getConn() {
return conn;
}
public void db_connect() throws ClassNotFoundException, SQLException{
// JDBC Klassen laden
Class.forName(dbClassName);
// Verbindungsversuch auf 5 Sekunden setzen
DriverManager.setLoginTimeout(5);
this.setConn(DriverManager.getConnection(CONNECTION,p)); // p contains the username and the database
}
public void db_close(){
try {
this.getConn().close();
} catch (SQLException e) {
if(GLOBALVARS.DEBUG)
e.printStackTrace();
}
}
public String[] query_myHighscores(int gameid, PlayerModel p) throws SQLException{
List<String> rowValues = new ArrayList<String>();
PreparedStatement stmnt;
if(gameid == GLOBALVARS.DRAGRACE)
stmnt = this.getConn().prepareStatement("SELECT score FROM highscore WHERE gid = ? and pname = ? ORDER BY score ASC LIMIT 0,3");
else
stmnt = this.getConn().prepareStatement("SELECT score FROM highscore WHERE gid = ? and pname = ? ORDER BY score DESC LIMIT 0,3");
stmnt.setInt(1, gameid);
stmnt.setString(2, p.getUname());
ResultSet rs = stmnt.executeQuery();
rs.beforeFirst();
while(rs.next()){
rowValues.add(rs.getString(1));
}
stmnt.close();
rs.close();
return (String[])rowValues.toArray(new String[rowValues.size()]);
}
CONNECTION 字符串是一个类似于 jdbc:mysql://my_server/my_database 的字符串
在 HighscoreGUI.java 类中,我请求这样的数据:
private void actualizeHighscores(){
DatabaseHelper db = new DatabaseHelper();
try{
db.db_connect();
String[] myScoreDragrace = db.query_myHighscores(GLOBALVARS.GAME1); // id of the game as parameter
// using the string
} finally {
db.db_close();
}
所以我尝试了:
Stacktrace 在 DatabaseHelper.java 类中指向行
this.setConn(DriverManager.getConnection(CONNECTION,p));
但是我找不到为什么我仍然得到这个异常的错误。
我无法更改数据库的所有设置,因为这是一个共享主机。所以我更喜欢 Java 方面的解决方案。
最佳答案
问题是您超出了允许的与该数据库的连接集。这个限制很可能正好或非常接近“1”。因此,一旦您请求第二个连接,您的程序就会崩溃。
你可以通过使用像commons-dbcp 这样的连接池系统来解决这个问题。 .这是推荐的方法,下面的其他解决方案仅适用于您可能不使用外部资源的情况。
如果您在可能用于您的解决方案的外部代码中被禁止,您可以这样做:
创建一个“数据库”类。此类且只有此类曾经连接到数据库,并且每次程序运行仅连接一次。你设置它,它连接到数据库,然后创建所有查询并通过这个类运行,在 Java 中我们称这个构造为“单例”。它通常有一个 private
构造函数和一个返回唯一实例的 public static
方法。您可以在程序的整个运行期间保持此连接,只有在它停止时才重新激活它。基本上,您针对池大小为“1”的特定情况实现“连接池”。
public class Database {
private static final Database INSTANCE = new Database();
private Database() {}
public static Database getInstance() {
return INSTANCE;
}
// add your methods here.
}
当程序终止时,关闭连接(使用关闭钩子(Hook))。
关于Java 和 MySQL : More than 'max_user_connections' exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24326502/
我的数据库出现问题,我将 max_user_connections 设置为 800,但问题仍然存在,“用户 root 已经拥有超过 'max_user_connections' 事件连接” 我想知道是
每隔一两个月就会有一群机器人访问我的网站并以如此快的速度打开连接,以至于达到我当前的 max_user_connection 值 25(将其增加到 75)。目前,我重新启动服务器,它再次正常工作,直到
我们有一个运行良好的 MySQL,每秒约有 1800 个查询。我们的 max_user_connections 目前是 350,我们只有在部署一些实验时才会达到它。 不过,如果我们将其设置为 600
有时我会遇到错误,即已达到 max_user_connections。我的托管公司不想进一步增加它。 如果我创建一个额外的用户,并且 50% 的时间连接到该用户而不是原始用户,那么实际上我的最大用户连
我无法访问我的数据库。我收到以下错误: User 'myuser' has exceeded the 'max_user_connections' resource (current value:
我网站上的某些页面是通过大量 ajax 调用填充的,通常有 20 多个 ajax 调用异步运行。我遇到的问题是每次调用都会创建一个新的 mysql_connection,导致我收到“max_user_
我有一个返回以下错误的项目 User already has more than 'max_user_connections' active connections 我知道这是一个MySQL错误,我可
最近进行一些更改后,站点开始显示 max_user_connections 错误,这可能表明对 MySQL 数据库的并发连接尝试过多。 我注意到最初的程序员实现了一个“DB”类来管理数据库连接,并且似
我有一个 MySQL/PHP 网站。有时,我无法连接,因为 Warning: mysql_connect() [function.mysql-connect]: User foo has alread
所以我的网站目前正在爆炸式增长。在我的 header.php 中(只有登录用户才有)检查是否有 mysql_error。如果找到,它会破坏 session 并输出: 抱歉,出了点问题 [mysql_错
不幸的是,我在 MySQL 中遇到了“max_user_connections”问题。我正在使用共享主机,因此“max_user_connections”值设置为 8,当我使用 WAMP 在我的本地主
我正在通过 laravel 实现一个网站。有一个问题,有时它会显示一些错误 already has more than 'max_user_connections' active connection
我正在使用名为 getfreehosting.co.uk 的免费网络托管服务。 max_user_connections 是 5。每次我的页面加载时,它做的第一件事就是调用一个 load.php 从我
我有 db 几乎所有类都扩展的类: class db { protected $db; public function __construct() { $this->c
我有一个 MySQL、Express、Angular、NodeJS 应用程序,有时当我登录时,我的 Node 控制台出现以下错误: TypeError: Cannot read property 'q
在大学里,我的练习是用 Java 开发多人游戏。客户端之间的通信不应使用套接字等进行处理,而是借助客户端在游戏中添加步骤的 MySQL 数据库。因为是骰子游戏,所以不需要很多查询。 (每个游戏 ses
我有一个托管在 Hostinger 网络主机上的 Bootstrap 系统。 我登录的程序是高级帐户。 今天我们尝试并行使用 20 个用户,突然间,所有用户都收到错误消息: User 'u526475
我正在使用下面的数据源配置设置,但一段时间后,我收到“用户'用户名'已超出'max_user_connections'资源(当前值:10)”。 maxIdle 连接设置为 1 但我们仍然收到此错误。有
我有一个适用于 Android、Windows Phone 和 iOS 应用程序的 PHP REST API。 API 的响应始终是 JSON。我们使用 DataBase 类来管理 PDO 连接和 C
这是mysql错误:连接失败:用户“db2498”已超过“max_user_connections”资源(当前值:200)。 我设置了my.cnf: [mysqld] max_connections
我是一名优秀的程序员,十分优秀!