Как создать файлы базы данных при использовании MySQL в качестве встроенного сервера

Я пытаюсь создать приложение, которое будет использовать встроенную базу данных MySQL (в настоящее время на OS X, но в конечном итоге на OS X и Windows), и я использую этот пример в качестве отправной точки. Я успешно смог собрать его, используя 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}
)

(Я собрал ssl локально в / Users / stebro / test / openssl, и мне пришлось изменить имя демонстрационного файла на .cpp, чтобы cmake создал правильные связи с STL & другие вещи во время выполнения. Я использую mysql, установленный через homebrew, который является «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», но я никогда не предпринимал никаких шагов для создания этой базы данных (или любых других файлов, необходимых встроенному серверу).

Как создать исходное состояние файла для правильной работы встроенного сервера? Должен ли я создать базу данных на моем локальном экземпляре MySQL с помощью инструкций эти, затем выключите этот сервер & скопировать файлы в какое-нибудь локальное пространство? Или apis находится в библиотеке сервера mysqld, которую я использую для создания исходных файлов (и последующей проверки базы данных)?

0

Решение

Хорошо, неверная конфигурация с моей стороны. Файл 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

Демонстрационная программа теперь работает с операцией на соединении «два» (который соединяется без спецификатора базы данных), но все еще не работает на «одном», но это потому, что еще не было создано ни одной «тестовой» БД — думаю, я могу понять, что один из.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]