在Apache:MySQL下使用C进行CGI错误:连接太多

在Apache:MySQL下使用C进行CGI错误:连接太多,mysql,database-connection,Mysql,Database Connection,当我尝试连接到MySQL时,连接太多。 为什么每次连接到MySQL服务器时都会关闭连接,但却会出现此错误? 我应该如何解决这个问题 使现代化 我在Ubuntu上运行这个。我的项目是CGI,它是用C编写的。 我的web服务器是Apache。 这是我的源代码的一个例子。其他的几乎是一样的 #include <mysql.h> #include <stdio.h> #include <string.h> MYSQL *conn; MYSQL_RES

当我尝试连接到MySQL时,连接太多。 为什么每次连接到MySQL服务器时都会关闭连接,但却会出现此错误? 我应该如何解决这个问题

使现代化 我在Ubuntu上运行这个。我的项目是CGI,它是用C编写的。 我的web服务器是Apache。 这是我的源代码的一个例子。其他的几乎是一样的

#include <mysql.h>
#include <stdio.h>
#include <string.h>

    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    char *server = "localhost";
    char *user = "root";
    char *password = "jitcomm"; /* set me first */
    char *database = "profile";
    
    int main(int argc, char *argv[]) 
    {
        if(argc==1)
            getAll();
        else 
            getOneUser(argv[1]);
        return 0;       
    }

    // show user 
    void getAll()
    {
       
        char  query[500];
        char result[1024];
        memset(result,0,1024);
        memset(query,0,500);
        conn = mysql_init(NULL);
        int i;
        FILE *fout;
                if((fout = fopen("gUsers","w"))==NULL)
                {
                        printf("error with file");
                }


        /* Connect to database */
        if (!mysql_real_connect(conn, server,
        user, password, database, 0, NULL, 0)) {
            fprintf(stderr, "%s\n", mysql_error(conn));
            exit(1);
       }

        /* send SQL query */
        sprintf(query,"select * from userTbl");
        if (mysql_query(conn, query)) 
        {
            fprintf(stderr, "%s\n", mysql_error(conn));
            exit(2);
       }
        res = mysql_use_result(conn);
    
        /* output table name */
        system("clear");
        sprintf(result,"ID\t Name\t Password\t Role\n");
            while ((row = mysql_fetch_row(res)) != NULL)
        {
             //printf("%s \n", row[0]);
            //strcpy(id,row[0]);
            sprintf(query,"%s\t %s\t %s\t\t %s\n",row[0], row[1], row[2], row[3]);
            strcat(result,query);
            for(i = 1 ;i<4;i++)
                        {
                if(i==1)
                                fprintf(fout,"%s\n",row[i]);    //write data to the file
                if(i==2)
                                fprintf(fout,"%s\n",row[i]);    //write data to the file
                if(i==3)
                                fprintf(fout,"%s\n",row[i]);    //write data to the file

                        }   
        }
        /* close connection */
        mysql_free_result(res);
        mysql_close(conn);
        //printf(result);   
    }

    void getOneUser(char *n)
        {

                char  query[500];
                char result[1024];
                memset(result,0,1024);
                memset(query,0,500);
                conn = mysql_init(NULL);
                int i;
                FILE *fout;
                if((fout = fopen("gUsers","w"))==NULL)
                {
                        printf("error with file");
                }


                /* Connect to database */
                if (!mysql_real_connect(conn, server,
                user, password, database, 0, NULL, 0)) {
                fprintf(stderr, "%s\n", mysql_error(conn));
                exit(1);
           }

                /* send SQL query */
                sprintf(query,"select * from userTbl where name = '%s'",n);
                if (mysql_query(conn, query))
                {
                fprintf(stderr, "%s\n", mysql_error(conn));
                exit(2);
           }
                res = mysql_use_result(conn);

                /* output table name */
                system("clear");
                sprintf(result,"ID\t Name\t Password\t Role\n");
                while ((row = mysql_fetch_row(res)) != NULL)
                {
                         //printf("%s \n", row[0]);
                         //                        //strcpy(id,row[0]);
                        sprintf(query,"%s\t %s\t %s\t\t %s\n",row[0], row[1], row[2], row[3]);
                        strcat(result,query);
            for(i = 1 ;i<4;i++)
                        {
                                if(i==1)
                                fprintf(fout,"%s\n",row[i]);    //write data to the file
                                if(i==2)
                                fprintf(fout,"%s\n",row[i]);    //write data to the file
                if(i==3)
                                fprintf(fout,"%s\n",row[i]);    //write data to the file

                        }
                }
                /* close connection */
                mysql_free_result(res);
                mysql_close(conn);
                //printf(result);
        }

你能提供源代码吗?这个网站上已经有很多关于这些主题的问题了。你用过搜索吗?如果是的,并且他们没有帮助,请在您的问题中包含这些内容,这样我们就不必经历所有相同的阶段。你能提供更多关于你的系统的细节吗?你在使用Apache吗?哪种mods?PHP?数据库连接池?如何在PHP中创建和完成连接?使用该站点的其他应用程序?MySQL变量?@zubair>>我更新了我的问题。@konerak>>我搜索过,但大多数是php或其他方面的问题,而不是C。我不理解它们的编码!!我去搜索Mysql。但这并不能解释为什么我会出现这个错误,我第一次开始使用Mysql。