Страница 1 из 1

TMySQL51Connection.open = error SIGSEGV

СообщениеДобавлено: 16.11.2012 14:40:00
Александр_Тверь
Добрый день, господа!

По служебной необходимость понадобилось написать сервис, который бы коннектился к MySQL и выполнял некоторые запросы.

C FreePascal знаком, но совсем поверхностно.
Сейчас пытаюсь подключиться к MySQL и выполнить простенький запрос.

Для того, чтобы разобраться (попробовать) в подходах, накидал немного кода, который не работает :)
Соответственно прошу Вашей помощи. Буду благодарен за ссылку на нужный раздел справки, общие рекомендации или конкретное решение данной проблемы.

Какие ограничения:
1. Подключаться хочется из консоли т.е. без использования форм.
2. Работать будет под виндой (хотя использовать win32 специфичные варианты не хотелось бы).
3. MySQL 5.1

В качестве IDE использую Lazarus 1.02

Проблемы:
1. Что-то не понял, как строковый Port (читается из ini файла) преобразовать в нужный для TMySQL51Connection тип.
2. При MySQLConn.open возникает ошибка SIGSEGV, возможно это как-то связано с тем, что я при создании не указываю объект (TMySQL51Connection.Create(nil))?
3. Возможно есть какой-то другой "true way" (с учетом указанных выше ограничений)?

Ниже приведен листинг модуля (на CurSet можно забить, класс читает настройки из ini):

program ECUKM4;

{$mode objfpc}{$H+}

uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SettingsUnit,mysql51conn, sqldb;


var
CurSet : Settings;
Server, DatabaseName, UserName, Password, Port :String;
MySQLConn : TMySQL51Connection;
MySQLQuery : TSQLQuery;

begin

CurSet := Settings.Create;

Server := CurSet.ReadValue('General','Server');
Port := CurSet.ReadValue('General','Port');
DatabaseName := CurSet.ReadValue('General','DatabaseName');
UserName := CurSet.ReadValue('General','UserName');
Password := CurSet.ReadValue('General','Password');

CurSet.Free;

MySQLConn := TMySQL51Connection.Create(nil);

MySQLConn.HostName := Server;
MySQLConn.Port := 3306;
MySQLConn.UserName := UserName;
MySQLConn.Password := Password;
MySQLConn.DatabaseName := DatabaseName;
MySQLConn.CharSet := 'utf8';
MySQLConn.open; // ТУТ ВОЗНИКАЕТ ОШИБКА

MySQLConn.Free;

Re: TMySQL51Connection.open = error SIGSEGV

СообщениеДобавлено: 11.12.2012 10:44:23
yeger
Пример не моделировал, извините, но:
- Нет объекта SQLTransaction. Это важно.
- я делаю подключение через
Код: Выделить всё
MySQLConn.Connected := true;

может и не существенно, но все таки.