2012-04-16 6 views
1

Я новичок в программировании на mySQL и, похоже, столкнулся с очень простой проблемой.Не удается создать базу данных mySQL

У меня есть следующий код, но получил ошибку сегментации в части «создать базу данных».

MYSQL *s1; 
MYSQL mysql_sense; 
char strBuf[8192] = {0}; 
char DB_NAME[300] = "0_4_3"; 

mysql_init(&mysql_sense); 

sprintf(strBuf, "CREATE DATABASE IF NOT EXISTS %s;", DB_NAME); 
mysql_real_query(&mysql_sense, strBuf, strlen(strBuf)); // seg fault here 

Я попытался

CREATE DATABASE IF NOT EXISTS 0_4_3 

в самом MySql, и не было никаких ошибок. Почему я получаю seg-ошибку в моем коде?

+5

Это поможет, если вы отметили это соответствующим языком. Таким образом, больше людей могут помочь :) – Jim

ответ

2
  1. Вы не делаете mysql_connect() или mysql_real_connect().
  2. Вы не проверяете возвращаемое значение mysql_init().
+0

Сначала я подключился к базе данных NULL, а затем создал нужную мне базу данных. Он работает сейчас. Благодаря! – Rayne

0

Это может быть не связан с вашей проблемой, но в документации сказано, что:

По умолчанию, mysql_query() и mysql_real_query() интерпретировать их заявление строковый аргумент как одного оператора, чтобы быть выполненный, и обрабатывает результат в зависимости от того, создает ли оператор результат (набор строк, как для SELECT) или счетчик затронутых строк (как для INSERT, UPDATE и т. д.).

http://dev.mysql.com/doc/refman/5.5/en//c-api-multiple-queries.html

Поскольку у вас есть только один оператор простейший исправить это понизить завершающую точку с запятой.

+0

Спасибо за ваш ответ, но полуколока не вызвала ошибку. – Rayne

Смежные вопросы