c++ - 使用MySQL作为嵌入式服务器时如何创建数据库文件

标签 c++ mysql macos embedded-database

我正在尝试构建一个使用 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/

相关文章:

C++ - 如何有效地找出 vector 中的任何字符串是否可以从一组字母中组装出来

c++ - 使用Matlab C++编译器将C++代码转换成Matlab

php - Laravel 5.4 : Eloquent. 查找最近的日期

javascript - keydown 上普通字符和半字符的区别

c++ - 大多数现代版本的 Linux 和 C/C++ 编译器是否已删除对 graphics.h header /库的支持?

c++ - CIN 回路不工作

php - codeigniter 中的 MLM 树结构

java - 使用带时间戳的 sql 时 ps.executeQuery(sql) 出错

objective-c - NSTableView 在单元格中绘制按钮异常 - 它们不应该在那里

macos - 为什么我的 mac lldb 生成 lldb 本身无法识别的核心文件?