我试图构建一个应用程序,该应用程序将使用MySQL嵌入式数据库(目前在OS X上,但最终在OS X和Windows上)以及I我以this example为起点。我已经成功地能够建立它,使用cmake这个CMakeLists文件:如何在使用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}
)
(我建立SSL在本地/用户/ stebro /测试/ OpenSSL的,我不得不改变演示文件的名称为了使cmake创建与STL &其他运行时的东西的正确联系。我通过自制软件安装了mysql,它是“mysql Ver 14.14 Distrib 5.7.19,用于使用EditLine包装的osx10.10(x86_64)”)。 。
当我运行程序时,我得到的错误:
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
我假设这个错误发生的事情,因为测试试图连接到数据库“测试”,但我从来没有采取任何措施来创建此数据库(或嵌入式服务器所需的任何其他文件)。
如何为嵌入式服务器创建启动文件状态以正常工作?我是否使用类似于these的指令在本地MySQL实例上创建数据库,然后关闭该服务器&将文件复制到某些本地空间?或者,在我用来创建初始文件(以及后续数据库“测试”)的mysqld服务器库中使用apis?