2017-07-30 10 views
0

MySQL組み込みデータベースを使用するアプリケーションを構築しようとしています(現在はOS Xではありますが、最終的にはOS XとWindowsの両方) this exampleを出発点として使用しています。私は正常にこのCMakeListsファイルとcmakeのを使用して、それを構築することができました:MySQLを組み込みサーバーとして使用すると、データベースファイルを作成するにはどうすればいいですか?

cmake_minimum_required(VERSION 3.3) 

project(Demo) 

set(TARGET_NAME Demo) 

add_executable(${TARGET_NAME} test2_libmysqld.cpp) 

target_include_directories(${TARGET_NAME} 
    PRIVATE /usr/local/include/mysql 
) 

find_library(LIBMYSQLD NAMES libmysqld.a) 
find_library(LIBSSL NAMES libssl.a PATHS /Users/stebro/test/openssl/openssl) 
find_library(LIBCRYPTO NAMES libcrypto.a PATHS /Users/stebro/test/openssl/openssl) 

# target_include_directories(${TARGET_NAME} PUBLIC ${LIBMYSQLD_INCLUDE_DIRS}) 
target_link_libraries(${TARGET_NAME} 
    ${LIBMYSQLD} 
    ${LIBSSL} 
    ${LIBCRYPTO} 
) 

(私は/ユーザ/ stebro /テスト/ opensslのローカルSSLを構築し、私はデモファイルの名前を変更する必要がありました私は、 "EditLine wrapperを使ってosx10.10(x86_64)用のmysql Ver 14.14 Distrib 5.7.19"であるhomebrew経由でインストールされたmysqlを使用しています。 。

私はプログラムを実行すると、私はエラーを取得:

bash$ ./Demo --defaults-file=../my.cnf 
InnoDB: Progress in percent: 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
mysql_real_connect failed: Unknown database 'test' 

のmy.cnfは次のようになります。

[Demo_SERVER] 
language = /usr/local/Cellar/mysql/5.7.19/share/mysql/english 

[libmysqd_server] 
datadir = ./data 
language = ./english 
skip-innodb 

[libmysqld_client] 
language = ./english 

テストをしようとしているので、私はこのエラーが起こっていると仮定していますデータベース "test"に接続しますが、このデータベース(または組み込みサーバーに必要なその他のファイル)を作成するための手順は一度もありませんでした。

組み込みサーバーが正しく機能するための開始ファイルの状態を作成するにはどうすればよいですか? theseのような指示でローカルのMySQLインスタンスにデータベースを作成してから、そのサーバをシャットダウンしますか?&ファイルをいくつかのローカルスペースにコピーしますか?または、私は初期ファイル(およびその後のデータベース "test")を作成するために使用するmysqldサーバライブラリのapisですか?

答えて

0

私の一部では間違った設定です。私が使用していたmy.cnfファイルは、私がオンラインで見つけた2つの異なる例のマージです。私の例の正しいmy.cnfファイルは次のようになります。

[test2_libmysqld_SERVER] 
language = /usr/local/Cellar/mysql/5.7.19/share/mysql/english 
datadir = ./data 

[test2_libmysqld_CLIENT] 
language = /usr/local/Cellar/mysql/5.7.19/share/mysql/english 

デモプログラムは現在(データベース指定せずに接続している)接続「2」の操作で動作しますが、それでも「1」に失敗し、しかし、それはまだ "テスト"データベースが作成されていないからです - 私はそれを理解できると思います。

関連する問題