mysql linux c apiおよび使用ノート

4976 ワード

  • でよく使われるlinux C API
  • マルチスレッド関連ルーチン
  • 常用mysql文
  • で発生した問題
  • mysqlサービスエラー
  • を開始
  • インポートファイルエラー

  • よく使われるlinux C API
    MYSQL *conn = mysql_init(void);         //   mysql,  mysql  
    //iferr(!conn)
    
    conn = mysql_real_connect(conn, "localhost"    IP,    ,  ,   database,0, NULL, 0);
    //iferr (!conn)
    
    int res = mysql_real_quary(conn, (char *)cmd, len);     //  mysql  ,@cmd mysql    ,       mysql  ,@len @cmd  
    //iferr (res)
    
    //      
    char value = 1;
    mysql_options(conn, MYSQL_OPT_RECONNECT, &value);
    
    
    MYSQL_RES *res = mysql_store_result(conn);      //       
    //iferr(!res)
    r = mysql_num_rows(res);                        //    
    c = mysql_num_fields(res);                      //  (   )
    while ((r = mysql_fetch_field(res)))            //    
    {
        //r[0]、r[1]...      、   ...   
        //do somthing...
    }
    
    mysql_free_result(res); //     
    mysql_close(conn);      //    
    mysql_error(conn);      //     
    mysql_errno(conn);      //    
    
    //        mysql    ,              
    mysql_library_init(0, NULL, NULL);      //   mysql   (     )
    mysql_library_end();                    //
    mysql_thread_init();                    //         
    mysql_thread_end();                     //

    マルチスレッド関連ルーチン
    void *thread(void *arg)
    {
        mysql_thread_init();    //             
        MYSQL *conn = mysql_init();
        //iferr(!conn)
        conn = mysql_real_connect(conn, "localhost", "user", "passwd", "database", 0, NULL, 0);
        //iferr(!conn)
    
        //do somthing...    
    
        mysql_close(conn);
        mysql_thread_end();   //       ,      
    }
    
    int main()
    {
        //                       mysql      
        if (mysql_library_init(0, NULL, NULL)) 
        {
            //err   
        }
        //do somthing...
    
        pthread_t t;
        pthread_create(&t, NULL, thread, NULL);
    
        //do somthing...
        mysql_library_end();  //                 
        return 0;
    }

    常用mysql文
  • select*fromテーブル名//テーブル内のすべてのデータを取得
  • select要素名fromテーブル名//テーブル内のすべての要素を取得
  • select要素名fromテーブル名where count=1//式count=1を満たすすべての要素を取得
  • delete fromテーブル名where式//テーブルで式を満たす要素を削除
  • insert intoテーブル名values(値、値、値)/テーブルにデータを挿入し、カッコ内に各要素値
  • を挿入する
  • truncateテーブル名//クリアテーブル
  • create tableテーブル名(要素名タイプ(長さ)、要素名タイプ(長さ)//テーブル作成
  • drop tableテーブル名//削除テーブル
  • load data infileファイル名ignore into tableテーブル名fields terminated by'-'//ファイルをデータベースにインポートします.ignoreの意味は重複に遭遇した一意のキー値では無視されます.このオプションはreplaceの意味で重複に遭遇した一意のキー値で置換され、両方を選択しない場合は後のデータをスキップします.fields terminated by'-'は、ファイル内で'-'文字で各要素を分割することを意味します.

  • あった問題
    mysqlサービスの起動エラー
    エラー:Failed to start mysql.service: Unit mysql.Serviceis maskedコマンドライン実行文:systemctl unmask mysql.サービスでOK
    インポートファイルエラー
    mysqlコマンドラインで実行:show variables like'%secure_file_priv%’は値を表示し、値が1つのパスであれば、インポートされたファイルはそのパスの下でインポートする必要があります.パスを変更したり、値がNULLであれば、以下の変更が必要です.
    /etc/myを追加します.cnfファイル
    [mysqld]
    secure_file_prev=

    指定したインポートファイルのパスは、等号の後に書くことができます.上記のように指定しない場合は、インポートファイルは任意のパスで書くことができます.
    現在はこれだけしか使っていないので、触れていないものは不定期に更新する機会があります