2017-10-08 13 views
0

"ゲーム"サーバーのセットアップをコーディングしています。データベース用にMySQLを使用しています。私はデータベース+テーブルと列を作成するときにエラーが発生します。 phpmyadminでMysqlコードをテストしたところ、うまくいきました。cでmysqlを使用しているときのエラー

int area; 
char user[100]; 
char pass[100]; 
char ip[200]; 
char tentativaspm; 
void mysqlsetup(){ 


    MYSQL *CON = mysql_init(NULL); 
    if (CON == NULL) 
    { 
    fprintf(stderr, "%s\n", mysql_error(CON)); 
    exit(1); 

    } 
    if (mysql_real_connect(CON, ip, user, pass, 
      NULL, 0, NULL, 0) == NULL) 
    { 
     fprintf(stderr, "%s\n", mysql_error(CON)); 
     mysql_close(CON); 
     sleep(2); 
     userepassmysql(); 
    } 
    printf("Conecao establecida.\n"); 
    if(mysql_query(CON, "CREATE DATABASE place;")){ 
     fprintf(stderr, "%s\n", mysql_error(CON)); 
     mysql_close(CON); 
     exit(1); 


    } 


if(mysql_query(CON, "USE place; CREATE TABLE grid (pixelID int,color int);"){ 
     fprintf(stderr, "%s\n", mysql_error(CON)); 
     mysql_close(CON); 
     exit(1); 

} 

`そして、私はこのエラーを取得する:

は、ここに私のコードのサンプルです

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USE grid CREATE TABLE grid (pixelID int(11) NOT NULL, color int(11) NOT N' at line 1

答えて

2

デフォルトするmysql_queryのC関数は、複数のSQLステートメントをサポートしていません。 しかし、あなたは正しいデータベース名を指定して[データベース]を置き換えるoneliner

CREATE TABLE [database].grid (pixelID INT, color INT) 

ノートに2つのクエリ

USE [database]; 
CREATE TABLE grid (pixelID int,color int) 

を組み合わせることができます。複数のSQL文を有効にするために、関数mysql_set_server_option()関数を使用しoneliner

if(mysql_query(CON, "CREATE TABLE place.grid (pixelID int,color int);"){ 

ソリューション2

を使用して

ソリューション1

mysql_set_server_option(connection, MYSQL_OPTION_MULTI_STATEMENTS_ON); 
+0

ありがとうございます。Dお疲れ様でした。 –

関連する問題