我正在尝试构建一个使用 MySQL 嵌入式数据库的应用程序(当前在 OS X 上,但最终在 OS X 和 Windows 上),并且我正在使用 this example作为起点。我已经成功地能够使用 cmake 和此 CMakeLists 文件来构建它:
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}
)
(我在/Users/stebro/test/openssl 本地构建了 ssl,并且我必须将演示文件的名称更改为 .cpp,以便 cmake 创建与 STL 和其他运行时内容的正确链接。我' m 使用通过 homebrew 安装的 mysql,即“mysql Ver 14.14 Distrib 5.7.19,适用于 osx10.10 (x86_64),使用 EditLine 包装器”。
当我运行该程序时,出现错误:
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 实例上创建数据库,然后关闭该服务器并将文件复制到某个本地空间?或者 api 是否位于我用来创建初始文件(以及后续数据库“测试”)的 mysqld 服务器库中?
最佳答案
好吧,我的配置错误。我使用的 my.cnf 文件是我在网上找到的两个不同示例的合并。我的示例的正确 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
演示程序现在可以处理连接“二”(无需数据库说明符进行连接)上的操作,但在“一”上仍然失败,但这是因为尚未创建“测试”数据库 - 我想我可以算出来。
关于c++ - 使用MySQL作为嵌入式服务器时如何创建数据库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45400681/