доктор Вандершпигель (
wunderwaffe) wrote2022-01-23 10:32 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Связка Lazarus+Zeos Access+MariaDB
Итак, есть лазарус, который пользует БД в xampp 3.2.1 через libmysql.dll. ВНЕЗАПНО эта связка перестает работать со словами "lazarus can not load default MySQL library ("libmysql.dll" or "libmysql.dll"). check your installation."
Копания, что производит такой результат, привели к файлу
C:\lazarus\fpc\3.2.0\source\packages\mysql\src\mysql.inc
повеселив строками
SErrDefaultsFailed = 'Can not load default MySQL library ("%s" or "%s"). Check your installation.';
(см выше сообщение) и
const
mysqllib = 'libmysql.dll';
mysqlvlib = 'libmysql.dll';
Выбери, бля, две таблетки. Так как чтобы колупаться в них надо еще перекомпилировать в fpc, да ну его нахуй еще пару часов впизду. Запихивания по советам в инете файла libmysql.dll в разные системные и Лазаруса директории, включая
c:\Users\AppData\Local\porno\hard\necrofilia\lazarus\
результатов не дали. Поэтому решыл поставить все новейшее
https://www.apachefriends.org/xampp-files/7.4.27/xampp-windows-x64-7.4.27-1-VC15-installer.exe
но оказалось что в xampp уже нет libmysql.dll и там блядь они на свет лезут mariadb. Поэтому пришлось скачивать непосредственно
https://dlm.mariadb.com/1902495/MariaDB/mariadb-10.4.22/winx64-packages/mariadb-10.4.22-winx64.zip
где искомая библиотека и была найдена под именем
c:\mariadb-10.4.22-winx64.zip\mariadb-10.4.22-winx64\lib\libmariadb.dll, отдельно здесь - https://disk.yandex.ru/d/RKqlSpwBEYB2wg
Доступ к БД теперь осуществляется через компоненты Zeos Access (я попытался переименовать libmariadb.dll в libmysql.dll но получил см. выше) вот так, например, для чтения данных -
1) компонент Zconnection1
свойства -
1. LibraryLocation == C:\lazarus\components\...\libmariadb.dll
2. Protocol == MariaDB-10
3. HostName == адрес, например localhost
4. Database, User, Password.
5. Connected == true
2) компонент ZReadOnlyQuery1
1. Connection == Zconnection1
Ну и код -
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.ZReadOnlyQuery1.Active:=false;
form1.ZReadOnlyQuery1.SQL.Clear;
form1.ZReadOnlyQuery1.SQL.Add('SELECT * FROM mess_lang WHERE id=6534 AND lang=1');
form1.ZReadOnlyQuery1.Active:=true;
form1.Caption:=form1.ZReadOnlyQuery1.FieldByName('header').AsString;
end;
Копания, что производит такой результат, привели к файлу
C:\lazarus\fpc\3.2.0\source\packages\mysql\src\mysql.inc
повеселив строками
SErrDefaultsFailed = 'Can not load default MySQL library ("%s" or "%s"). Check your installation.';
(см выше сообщение) и
const
mysqllib = 'libmysql.dll';
mysqlvlib = 'libmysql.dll';
Выбери, бля, две таблетки. Так как чтобы колупаться в них надо еще перекомпилировать в fpc, да ну его нахуй еще пару часов впизду. Запихивания по советам в инете файла libmysql.dll в разные системные и Лазаруса директории, включая
c:\Users\AppData\Local\porno\hard\necrofilia\lazarus\
результатов не дали. Поэтому решыл поставить все новейшее
https://www.apachefriends.org/xampp-files/7.4.27/xampp-windows-x64-7.4.27-1-VC15-installer.exe
но оказалось что в xampp уже нет libmysql.dll и там блядь они на свет лезут mariadb. Поэтому пришлось скачивать непосредственно
https://dlm.mariadb.com/1902495/MariaDB/mariadb-10.4.22/winx64-packages/mariadb-10.4.22-winx64.zip
где искомая библиотека и была найдена под именем
c:\mariadb-10.4.22-winx64.zip\mariadb-10.4.22-winx64\lib\libmariadb.dll, отдельно здесь - https://disk.yandex.ru/d/RKqlSpwBEYB2wg
Доступ к БД теперь осуществляется через компоненты Zeos Access (я попытался переименовать libmariadb.dll в libmysql.dll но получил см. выше) вот так, например, для чтения данных -
1) компонент Zconnection1
свойства -
1. LibraryLocation == C:\lazarus\components\...\libmariadb.dll
2. Protocol == MariaDB-10
3. HostName == адрес, например localhost
4. Database, User, Password.
5. Connected == true
2) компонент ZReadOnlyQuery1
1. Connection == Zconnection1
Ну и код -
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.ZReadOnlyQuery1.Active:=false;
form1.ZReadOnlyQuery1.SQL.Clear;
form1.ZReadOnlyQuery1.SQL.Add('SELECT * FROM mess_lang WHERE id=6534 AND lang=1');
form1.ZReadOnlyQuery1.Active:=true;
form1.Caption:=form1.ZReadOnlyQuery1.FieldByName('header').AsString;
end;