下記を参考にした。
苦戦したので、メモとして残す。
インストールする。
インスールが終わったら、バージョンを確認する。
% mysql --version
関連情報を表示する。
mysql: stable 8.0.31 (bottled) To connect run: mysql -u root To restart mysql after an upgrade: brew services restart mysql
サーバーを起動する。
Successfully started
mysql
(label: homebrew.mxcl.mysql)
接続する。
% mysql -u root
エラーになる。
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
下記の記事がヒットしたが、これではなかった。
ログを確認する。
MySQLの関連ファイルは下記にある。
/usr/local/var/mysql/
下記がエラーログ
下記のエラーがあった。
[ERROR] [MY-012526] [InnoDB] Upgrade is not supported after a crash or shutdown with innodb_fast_shutdown = 2. This redo log was created with MySQL 5.7.14, and it appears logically non empty. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html
指示されたドキュメントを読む
要約すると MySQL 8.0 はそれ以前と互換性がないので、 アップグレードする前に問題を解消しておけ。
どうやら MySQL 5.7.14 がインストールされていたようで、 今回のインストール作業で MySQL 8.0 にアップグレードされたようです。
今回は、過去の作業はないことにした クリーンインストールでいいので、 関連ファイルを全て削除することにする。
brew uninstall mysql では、関連ファイルは削除されないので。手入力で強制削除する。
% sudo rm -fr /usr/local/var/mysql/*
その後。再度インストールする。
サーバーを起動する。
接続する。
% mysql -u root
今度はうまくいった。
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.31 Homebrew
バージョンを表示する。
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.0.31 |
+-----------+
終了する。
mysql> exit;
コマンドラインから接続できたので、簡単なプログラムを試す。
下記を参考にした。
テスト用データを作成する。
mysql -uroot create database db_test; use db_test create table tb_test(id int,name varchar(256)); insert into tb_test(id,name) values(1,"aaa"); insert into tb_test(id,name) values(2,"bbb"); insert into tb_test(id,name) values(3,"ccc"); exit
プログラムを作成する。
mysql.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <mysql/mysql.h> int main(void){ MYSQL *conn = NULL; MYSQL_RES *resp = NULL; MYSQL_ROW row; char sql_str[255]; char *sql_serv = "localhost"; char *user = "root"; char *passwd = ""; char *db_name = "db_test"; memset( &sql_str[0] , 0x00 , sizeof(sql_str) ); // mysql接続 conn = mysql_init(NULL); if( !mysql_real_connect(conn,sql_serv,user,passwd,db_name,0,NULL,0) ){ // error exit(-1); } // クエリ実行 snprintf( &sql_str[0] , sizeof(sql_str)-1 , "select * from tb_test" ); if( mysql_query( conn , &sql_str[0] ) ){ // error mysql_close(conn); exit(-1); } // レスポンス resp = mysql_use_result(conn); while((row = mysql_fetch_row(resp)) != NULL ){ printf( "%d : %s\n" , atoi(row[0]) , row[1] ); } // 後片づけ mysql_free_result(resp); mysql_close(conn); return 0; }
コンパイルする。
brew コマンドでインストールすると、pkg-configもセットアップされる。
% pkg-config --cflags --libs mysqlclient
% gcc -Wall mysql.c pkg-config --cflags --libs mysqlclient
-o mysql
実行する。
% ./mysql
1 : aaa
2 : bbb
3 : ccc
サンプルコードを Github に公開した。