当前位置: 首页 > 面试题库 >

MYSQLi错误:用户已经具有多个'max_user_connections'活动连接

吴伟志
2023-03-14
问题内容

我正在运行的网站上出现以下错误。我不明白为什么会这样,因为它在我的本地主机上可以正常工作。与主持人有关吗?我在Unix服务器上。

Warning: mysqli::mysqli() [mysqli.mysqli]: (42000/1203): User dbo343879423 already has more than 'max_user_connections' active connections in /homepages/9/d322397966/htdocs/dump/models/class_database.php on line 11
Connect failed: User dbo343879423 already has more than 'max_user_connections' active connections 
Warning: mysqli::close() [mysqli.close]: Couldn't fetch mysqli in /homepages/9/d322397966/htdocs/dump/models/class_database.php on line 160

错误显示“用户dbo343879423在第11行的/homepages/9/d322397966/htdocs/dump/models/class_database.php中已经具有超过’max_user_connections’个活动连接”,所以这是脚本中的第11行-我可以。看不到任何错误!

$this -> connection = new mysqli($hostname,$username,$password,$database);

下面是class_database.php中的整个类,在脚本的其他部分是否出错,我应该更改吗?

<?php
#connects the database and handling the result
class __database {

    protected $connection = null;
    protected $error = null;

    #make a connection
    public function __construct($hostname,$username,$password,$database)
    {
        $this -> connection = new mysqli($hostname,$username,$password,$database);

        if (mysqli_connect_errno()) 
        {
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }
    }

    #fetches all result rows as an associative array, a numeric array, or both
    public function fetch_all($query) 
    {
        $result = $this -> connection -> query($query);
        if($result) 
        {
            return $result -> fetch_all(MYSQLI_ASSOC);
        } 
        else
        {
            $this -> error = $this -> connection -> error;
            return false;
        }
    }

    #fetches a result row as an associative array, a numeric array, or both
    public function fetch_assoc_while($query)
    {
        $result = $this -> connection -> query($query);
        if($result) 
        {
            while($row = $result -> fetch_assoc())
            {
                $return_this[] = $row;
            }

            if (isset($return_this))
            {
                return $return_this;
            }
            else
            {
                return false;
            }
        }
        else
        {
            $this -> error = $this -> connection -> error;
            return false;
        }
    }

    #fetch a result row as an associative array
    public function fetch_assoc($query)
    {
        $result = $this -> connection -> query($query);
        if($result) 
        {
            return $result -> fetch_assoc();
        } 
        else
        {
            $this -> error = $this -> connection -> error;
            return false;
        }
    }

    #get a result row as an enumerated array
    public function fetch_row($query)
    {
        $result = $this -> connection -> query($query);
        if($result) 
        {
            return $result -> fetch_row();
        } 
        else
        {
            $this -> error = $this -> connection -> error;
            return false;
        }
    }

    #get the number of rows in a result
    public function num_rows($query)
    {
        $result = $this -> connection -> query($query);
        if($result) 
        {
            return $result -> num_rows;
        } 
        else
        {
            $this -> error = $this -> connection -> error;
            return false;
        }
    }

    #performs a query on the database
    public function query($query)
    {
        $result = $this -> connection -> query($query); 
        if($result) 
        {
            return $result;
        } 
        else
        {
            $this -> error = $this -> connection -> error;
            return false;
        }

    }

    #escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection
    public function real_escape_string($string)
    {
        $result = $this -> connection -> real_escape_string($string);   
        if($result) 
        {
            return $result;
        } 
        else
        {
            $this -> error = $this -> connection -> error;
            return false;
        }

    }

    #display error
    public function get_error() 
    {
        return $this -> error;
    }

    #closes the database connection when object is destroyed.
    public function __destruct()
    {
        $this -> connection -> close();
    }
}
?>

还是我应该永久更改主机!?

下面是html" target="_blank">数据库连接类的实现。如果我删除此部分,该错误将不再出现,但是我在网站的其他部分也进行了同样的操作,它们不会造成任何问题!

<!-- side-video-library -->
<div id="side-video-library" class="round-corner">

    <h4><a href="<?php echo HTTP_ROOT;?>videos"><span>ENER VIDEO LIBRARY</span></a></h4>

    <?php
    $sql = "
    SELECT *
    FROM root_pages

    WHERE root_pages.parent_id = '8'
    AND root_pages.pg_highlight = '1'
    AND root_pages.pg_hide != '1'
    ORDER BY rand() DESC
    LIMIT 1
    ";

    #instantiate the object of __database class
    $object_item = new __database(DB_HOST,DB_USER,DB_PASS,DB_NAME);
    $item = $object_item -> fetch_assoc($sql);

    #instantiate the object of __database class
    $object_item_num = new __database(DB_HOST,DB_USER,DB_PASS,DB_NAME);
    $total_item = $object_item_num -> num_rows($sql);
    //echo $total_item;
    ?>

    <?php
    if ($total_item > 0)
    {
        $sql = "
        SELECT *
        FROM root_tagged

        LEFT JOIN root_tags ON ( root_tags.tag_id = root_tagged.tag_id )

        WHERE root_tagged.pg_id = '".$item['pg_id']."'
        ";

        #instantiate the object of __database class
        $object_tagname = new __database(DB_HOST,DB_USER,DB_PASS,DB_NAME);
        $item_tagname = $object_tagname -> fetch_assoc($sql);

        #instantiate the object of __database class
        $object_tagname_num = new __database(DB_HOST,DB_USER,DB_PASS,DB_NAME);
        $total_tagname = $object_tagname_num -> num_rows($sql);
    ?>
    <p class="item-video">
        <object style="width: 183px; height: 151px;" width="183" height="151" data="http://www.youtube.com/v/<?php echo get_video_id($item['pg_content_1']) ;?>" type="application/x-shockwave-flash">
            <param name="wmode" value="transparent" />
            <param name="src" value="http://www.youtube.com/v/<?php echo get_video_id($item['pg_content_1']) ;?>" />
        </object>
    </p>

    <h3><a href="<?php echo HTTP_ROOT.str_replace(' ', '-', 'videos').'/'.$item_tagname['tag_name'].'/'.str_replace(' ', '-', strtolower($item['pg_url']));?>"><?php if(strlen($item['pg_title']) > 20) echo substr($item['pg_title'], 0,20).'...'; else echo $item['pg_title'];?></a></h3>

    <p class="item-excerpt-video"><?php if(strlen($item['pg_content_2']) > 100) echo substr($item['pg_content_2'], 0,100).'...'; else echo $item['pg_content_2'];?></p>
    <a href="<?php echo HTTP_ROOT;?>videos" class="button-arrow"><span>More</span></a>
    <?php
    }
    ?>
</div>
<!-- side-video-library -->

我上课有误吗?

谢谢。


问题答案:

可能的问题是您只允许少数几个连接,并且当您的班级尝试获取新的连接时,会出现此错误。

这不是编程问题,只是可用资源的数量。使用此类的任何其他脚本均会发生错误。

您必须在服务器上的mysql配置文件上配置更多连接。如果您没有此访​​问权限,请要求支持人员进行此操作或更改为允许更多连接的托管公司!

另一种选择是在此类上实现单例模式,因此它可以重用相同的连接池,并且不会超出限制。



 类似资料:
  • 问题内容: 连接elasticsearch连接时出现此问题。 问题答案: 我知道这个问题已经很久了,但是我想分享一下如何解决这个问题。 如果您在本地使用elasticsearch 您必须做的第一件事是在计算机上运行elasticsearch。 因为上面的消息表明您不在本地运行elasticsearch。 因此,请访问链接并按照指示进行操作。 Docker环境 这里变得更加棘手。 首先,请按照此处的

  • 请在关闭之前阅读完整的问题:) 我正在寻找一个有mysqli的准备好的语句(重要的,不是PDO,因为我不能使用它,也不能将一些PDO代码传输到mysqli。),在那里我可以插入一个有很多值(大约2000)的长查询。但是查询必须准备好。 null null null 我的意思是 但当然,我不能把它绑定。

  • 问题内容: 与多个用户/设备一起使用Apple的新ARKit的最佳方法是什么? 似乎每个设备都可以分别了解自己的场景。到目前为止,我最好的猜测是使用原始特征点位置,并尝试在设备之间进行匹配,以将不同的视图点粘合在一起,因为ARKit没有提供任何绝对参考引用。 ===编辑1,我尝试过的事情=== 1)特征点 我一直在玩耍并暴露了原始特征点,现在我确信在它们的当前状态下它们是死胡同: 它们不是原始特征

  • 问题内容: 当我尝试登录phpMyAdmin时出现以下错误。 用户 __ 已经具有多个“ max_user_connections”活动连接 谁能让我知道如何从MySQL服务器端关闭这些数据库连接? 感谢您的时间! 问题答案: 在这里,我认为您可以解决您的问题 max_connections 另请阅读此http://dev.mysql.com/doc/refman/5.5/en/too-many-

  • 问题内容: 我的Android应用有很多按钮。 我的main.xml布局具有三个按钮。 我知道如何使用按钮从一个活动转到另一个活动,但是我不知道如何在一个活动上具有多个按钮,每个按钮启动的活动与另一个活动不同。 例 Main.xml Button1 Button2 Main2.xml 由button1启动 About.xml 由Button2启动 我如何使main.java文件做到这一点? 问题答

  • 我想知道如何转换类似于SwitchMap的可观察,但不是限制为单个活动流有多个(有限的)流。 其目的是让多个任务同时工作,达到某些任务计数限制,并允许新任务使用FIFO队列策略启动,这意味着任何新任务到达时都将立即启动,队列中最旧的任务将被取消。 switchMap将为源的每个发射创建可观察流,并将取消以前运行的可观察流。一旦创建了新的可观察流,我想实现类似的功能,但允许在某个级别(如flatMa