Писал на форуме лазаруса, решил перенести сюда, а то уже несколько раз понадобилось мне это.
win 7 64, mysql server 5.5
Не решился я откатываться так далеко всё-таки аж на 5.0 версию и начал плясать с бубном над 5.1+Lazarus
У меня установлен 5.5 сервер. С сайта мускула скачал предыдущую версию:
http://www.mysql.com/downloads/mysql/5.1.html
уж очень не 5.0 там помечена уже как безнадёжно устаревшая.
Скачал лазарус отсюда: http://www.hu.freepascal.org/lazarus/
Этот: Lazarus-0.9.31-29986-fpc-2.4.3-20110323-win64.exe
Установил его и обнаружил, что там есть таки файлы исходников, содержащие в названии mysql51. Попытки собрать их не увенчались успехом… Уж не знаю почему Более того я нашёл в исходниках и что на палитре дожен быть компонент 51 и даже картинка там к нему есть, но его нет и всё. Сильно долго я не ковырялся. Пока решил проблему так:
libmysql из архива 5.1 кидаем в system32.
В uses программы ручками дописываем mysql51conn.
После чего делаем форму нужную но без коннектора. А коннектор создаём программно. В дизайн тайме теперь не поредактируешь базу, конечно, но зато работает всё, включая и навигатор и dbgrid.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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 | unit Unit1;  {$mode objfpc}{$H+} interface uses   Classes, SysUtils, mysql51conn, odbcconn, sqldb, db, FileUtil, Forms,   Controls, Graphics, Dialogs, DBGrids, StdCtrls, DbCtrls; type   { TForm1 }   TForm1 = class(TForm)     Button1: TButton;     Datasource1: TDatasource;     DBGrid1: TDBGrid;     DBNavigator1: TDBNavigator;     MySQL51Connection1: TMySQL51Connection;     SQLQuery1: TSQLQuery;     SQLTransaction1: TSQLTransaction;     procedure Button1Click(Sender: TObject);     procedure SQLQuery1AfterPost(DataSet: TDataSet);   private     { private declarations }   public     { public declarations }   end;  var   Form1: TForm1;  implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin   MySQL51Connection1:=TMySQL51Connection.Create(Form1);   MySQL51Connection1.UserName:= 'root';   MySQL51Connection1.Password:= 'root';   MySQL51Connection1.DatabaseName:='test';   MySQL51Connection1.HostName:='localhost';   MySQL51Connection1.port:=3306;   MySQL51Connection1.CharSet:='utf8';   MySQL51Connection1.Open;   SQLQuery1.DataBase:=MySQL51Connection1;   SQLTransaction1.DataBase:=MySQL51Connection1;   SQLQuery1.Open; end; procedure TForm1.SQLQuery1AfterPost(DataSet: TDataSet); begin   SQLQuery1.ApplyUpdates; end; end. | 
В дизайн тайме можно воспользоваться ODBC.
Я именно так и делаю. Проблемы которые приносит с собой этот ODBC не страшны, т.к. в процессе программирования нам не так принципиально отсутствие русских букв и ещё кучка проблем
Инструкция: устанавливаем ODBC с сайта mysql
запускаем администратор источников данных ODBC под виндой
Добавляем туда драйвер. У меня так:
Имя | Драйвер
MySQL ODBC 5.1 Driver | MySQL ODBC 5.1 Driver
Кидаем на форму компонент ODBC
И хитро заполняем его:
1) указываем юзера и пароль
2) указываем в Driver и DatabaseName одинаковые значения: 'MySQL ODBC 5.1 Driver'
3) указываем хост
4) в параметрах (Params) пишем
| 1 2 3 | 	PORT=3306 	DATABASE=test 	SERVER=localhost | 
И всё заводится и запросы выполняет. Только эта хрень ещё не поддерживает UsePrimaryKeyAsKey в компонентах запросов. Поэтому у SQLQuery1 делаем UsePrimaryKeyAsKey false. И всё работает в дизайн тайме
А программно можно её потом Free, чтобы не мешала и всё тут
Для верности вешаем это всё на создание формы.
Вот попробовал работает:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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 | unit Unit1;  {$mode objfpc}{$H+} interface uses   Classes, SysUtils, mysql51conn, odbcconn, sqldb, db, FileUtil, Forms,   Controls, Graphics, Dialogs, DBGrids, StdCtrls, DbCtrls; type   { TForm1 }   TForm1 = class(TForm)     Button1: TButton;     Datasource1: TDatasource;     DBGrid1: TDBGrid;     DBNavigator1: TDBNavigator;     MySQL51Connection1: TMySQL51Connection;     ODBCConnection1: TODBCConnection;     SQLQuery1: TSQLQuery;     SQLTransaction1: TSQLTransaction;     procedure Button1Click(Sender: TObject);     procedure FormCreate(Sender: TObject);     procedure SQLQuery1AfterPost(DataSet: TDataSet);   private     { private declarations }   public     { public declarations }   end;  var   Form1: TForm1;  implementation {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin   ODBCConnection1.Close;   MySQL51Connection1:=TMySQL51Connection.Create(Form1);   MySQL51Connection1.UserName:= 'root';   MySQL51Connection1.Password:= 'root';   MySQL51Connection1.DatabaseName:='test';   MySQL51Connection1.HostName:='localhost';   MySQL51Connection1.port:=3306;   MySQL51Connection1.CharSet:='utf8';   MySQL51Connection1.Open;   SQLQuery1.DataBase:=MySQL51Connection1;   SQLTransaction1.DataBase:=MySQL51Connection1;   SQLQuery1.UsePrimaryKeyAsKey:=true;   SQLQuery1.Open;   ODBCConnection1.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin end; procedure TForm1.SQLQuery1AfterPost(DataSet: TDataSet); begin   SQLQuery1.ApplyUpdates; end; end. | 
Так же позволю себе заявление, что скорее всего взятая отсюда: http://downloads.mysql.com/archives.php?p=mysql-5.0 дллка для 5.0 и скопированная в system32 скорее всего запустит и компонент 50 не смотря на версию сервера Пробовать не буду, т.к. там нет 64 битной версии


