C+中的分段错误是什么+;mysql? 我使用C++向服务器发送MySQL命令。为什么会说“分割错误”,它是什么意思? 运行程序时,程序的输出为: connection Succeeded Segmentation fault

C+中的分段错误是什么+;mysql? 我使用C++向服务器发送MySQL命令。为什么会说“分割错误”,它是什么意思? 运行程序时,程序的输出为: connection Succeeded Segmentation fault,c++,mysql,C++,Mysql,编辑代码以删除i+1行,但仍然存在相同的问题 守则: #include <stdlib.h> #include <iostream> #include <mysql.h> #include <stdio.h> #define SERVER "localhost" #define USER "root" #define PASSWORD "coursework" int main() { MYSQL *connect; connec

编辑代码以删除i+1行,但仍然存在相同的问题

守则:

#include <stdlib.h>
#include <iostream>
#include <mysql.h>
#include <stdio.h>
#define SERVER "localhost"
#define USER "root"
#define PASSWORD "coursework"
int main() 
{
    MYSQL *connect;
    connect=mysql_init(NULL);
    if (!connect) 
    {
        std::cout<<"MySQL Initialization failed";
        return 1;
    }
    connect=mysql_real_connect(connect, SERVER, USER, PASSWORD, NULL ,0,NULL,0);

    if (connect) 
    {
        std::cout<<"connection Succeeded\n";
    } 
    else 
    {
        std::cout<<"connection failed\n";
        exit(1);
    }

    mysql_query (connect, "drop database if exists TTU;");
    mysql_query (connect,"create database TTU;");
    mysql_query (connect, "use TTU;");

    mysql_query (connect, "create table students(tnumber char(8) PRIMARY KEY,");
    mysql_query (connect, "firstname varchar(20) NOT NULL,");
    mysql_query (connect, "lastname varchar(20) NOT NULL,");
    mysql_query (connect, "dateofbirth date,");
    mysql_query (connect, "INDEX 'lastname_i' ('lastname'),");
    mysql_query (connect, "ENGINE=INNODB);");

    mysql_query (connect, "insert into students(tnumber, firstname, lastname, dateofbirth)");
    mysql_query (connect, "values (00001234, Joe, Smith, 1950-08-12);");

    MYSQL_RES *res_set;
    MYSQL_ROW row;
    mysql_query (connect,"select * from students;");
    unsigned int i =0;
    res_set = mysql_store_result(connect);
    unsigned int numrows = mysql_num_rows(res_set);
    while ((row= mysql_fetch_row(res_set)) != NULL ) 
    {
        std::cout << row[i] << std::endl;
    }

    mysql_close (connect);

    std::cout << "TEST" << std::endl;
    return 0;
}
#包括
#包括
#包括
#包括
#定义服务器“localhost”
#定义用户“根”
#定义密码“课程作业”
int main()
{
MYSQL*连接;
connect=mysql_init(NULL);
如果(!连接)
{

std::cout显示的代码中有多个错误。有两个主要错误:不正确使用
mysql\u query()
,以及多次检查各种mysql库函数的返回值失败,导致无法检测各种错误

    mysql_query (connect, "create table students(tnumber char(8) PRIMARY KEY,");
这是无效的SQL。
mysql\u query()
接受一个complete
SQL
语句并执行它。它不接受SQL语句的单个片段,在多次连续调用中分解,并且只在解析完完整的SQL语句后执行

由于显示的代码未能检查来自
mysql\u query()
的返回值,因此无法检测到整个
mysql\u query()
调用序列失败,并且未创建表

后续调用也无法检查其他MySQL库函数的返回值


显示的代码可能从
mysql\u store\u result()
返回
NULL
,无法检查它,将
NULL
指针传递到
mysql\u num\u rows()

和崩溃。

这似乎是C++代码而不是java。一个分割错误是当程序试图访问内存时,它没有访问权限时发生的错误。没有出现错误的行号(使用调试器获得)。,很难确定到底是什么导致了错误。我不是这个特定API的专家,但您如何确定这里有一个
I+1
条目:
std::cout