1 (edited by abgroup-artur 2023-02-22 08:55:34)

Topic: Работа с базой MySQL

У меня следующая задача: есть локальная база и по кнопке я бы хотел ее синхронизировать с базой MySQL. Такая конфигурация возможна?
Вопрос сводится к задаче работы с двумя базами одновременно.

Re: Работа с базой MySQL

Уточните, что вы имеете ввиду под словом "синхронизировать"?  Выровнять структуры двух БД? Провести (одностороннюю, двустороннюю) репликацию данных?


В любом случае такой волшебной кнопки в MVDB нет, для этого придется писать скрипты и SQL-запросы.

Визуальное программирование: блог и телеграм-канал.

3 (edited by abgroup-artur 2023-02-22 09:16:57)

Re: Работа с базой MySQL

У меня есть реализация интернетмагазина на сайте выполненная на OPENCART там всего оч много ненужного и запутанного). Я использую его как каталог. И у меня есть база данных написанная на Вашей платформе. Я бы хотел синхронизировать эти базы (структуры разные! речь идет о данных и соответственно у меня есть алгоритм их соответствия) Все что нового добавляется на Сайте должно в рамках синхронизации отображаться в моей базе. Пример: смотрим id_produkt есть - обновляем данные (условия изменяемости или не изменяемости данных не будет) если нет добавляем все данные по новому товару. Резюме: Как в рамках одного проекта открыть сразу несколько баз?
Про кнопку понятно - это просто механизм реакции он уже есть а привязка к кнопке для наглядности)

     //Application.ProcessMessages;
     //{$MySQL disable_connectdialog}
     //Form1.MySQLConnection.Server := '00000000';
     //Form1.MySQLConnection.Port := 3306;
     //Form1.MySQLConnection.Username := '00000000';
     //Form1.MySQLConnection.Password := '000000000';
     //Form1.MySQLConnection.Database := '0000000';
  //try
    //Form1.MySQLConnection.Connect;
  //except
    //ShowMessage('Can''t connect to database.');
    //SQL_Connect.Close;
//end;

Это работает при открытии главной формы, а при обработке нажатие на кнопку - нет.

Изначально при подключении к MySQL говорится что файл базы данных будет сформирован автоматически и например без соединения с этой базой у меня недоступны локальные таблицы которые я сформировал в рамках MVD.

4 (edited by pavlenko.vladimir.v 2023-02-22 10:24:55)

Re: Работа с базой MySQL

abgroup-artur wrote:

У меня есть реализация интернетмагазина на сайте выполненная на OPENCART там всего оч много ненужного и запутанного). Я использую его как каталог. И у меня есть база данных написанная на Вашей платформе. Я бы хотел синхронизировать эти базы (структуры разные! речь идет о данных и соответственно у меня есть алгоритм их соответствия) Все что нового добавляется на Сайте должно в рамках синхронизации отображаться в моей базе. Пример: смотрим id_produkt есть - обновляем данные (условия изменяемости или не изменяемости данных не будет) если нет добавляем все данные по новому товару. Резюме: Как в рамках одного проекта открыть сразу несколько баз?
Про кнопку понятно - это просто механизм реакции он уже есть а привязка к кнопке для наглядности)

     //Application.ProcessMessages;
     //{$MySQL disable_connectdialog}
     //Form1.MySQLConnection.Server := '00000000';
     //Form1.MySQLConnection.Port := 3306;
     //Form1.MySQLConnection.Username := '00000000';
     //Form1.MySQLConnection.Password := '000000000';
     //Form1.MySQLConnection.Database := '0000000';
  //try
    //Form1.MySQLConnection.Connect;
  //except
    //ShowMessage('Can''t connect to database.');
    //SQL_Connect.Close;
//end;

Это работает при открытии главной формы, а при обработке нажатие на кнопку - нет.

Изначально при подключении к MySQL говорится что файл базы данных будет сформирован автоматически и например без соединения с этой базой у меня недоступны локальные таблицы которые я сформировал в рамках MVD.

для работы с удаленной БД нужно использовать API, у wordpress вроде есть такое, но я им не пользовался и могу предложить Вам посмотреть такой вариант
https://pavlenkovv.ru/2022/03/29/%d0%be … %b1%d0%b4/
Возможно Вы сможете создать свой вариант API

Re: Работа с базой MySQL

Спасибо но это немного не то. Вы предлагаете сделать этот обработчик на удаленном сервере. А я спросил про работу в среде MVDB. Есть два непересекающихся процесса: работа с локальной базой и с удаленной. Мой вопрос был Как эти два процесса соединить в одном проекте. (без кода на стороне сервера) У меня есть только доступ к удаленной базе данных и все. Ни какой код на той стороне возможности написать не имею.
    //Application.ProcessMessages;
     //{$MySQL disable_connectdialog}
     //Form1.MySQLConnection.Server := '00000000';
     //Form1.MySQLConnection.Port := 3306;
     //Form1.MySQLConnection.Username := '00000000';
     //Form1.MySQLConnection.Password := '000000000';
     //Form1.MySQLConnection.Database := '0000000';
  //try
    //Form1.MySQLConnection.Connect;
Вот эта конструкция отлично работает но не дает возможности работать с локальной базой.

Re: Работа с базой MySQL

abgroup-artur wrote:

Вот эта конструкция отлично работает, но не дает возможности работать с локальной базой.

Одновременно можно работать только с одной БД. Если Вы хотите, что бы данные менялись на удаленной БД когда Вы вносите изменения в локальной БД, то нужно использовать API.
В обратном порядке, когда происходит изменение в БД его фиксирует Тригер, который записывает в БД сведенья (любые, на Ваш вкус, что бы программа поняла что на удаленной БД произошли изменения). Программа обращается к этим данным (любое указанное Вами время) и если имеются изменения, то посылает запрос на получение этих данных, API обрабатывает запрос и передает эти данные в ответе, Ваша программа принимает и записывает ответ в  локальную БД.

7 (edited by abgroup-artur 2023-02-23 07:34:53)

Re: Работа с базой MySQL

А если перевернуть процесс Например работать с базой MySQL  как обычно а локальную открывать не напрямую раз так невозможно а скажем как файл и разбирать его на запчасти Сработает?  Или перекидывать данные между двумя работающими процессами? Дрова конечно но с реализацией API как то стожновато для меня

Re: Работа с базой MySQL

abgroup-artur wrote:

разбирать его на запчасти Сработает?  Или перекидывать данные между двумя работающими процессами?

не понимаю...

Re: Работа с базой MySQL

pavlenko.vladimir.v wrote:

Одновременно можно работать только с одной БД...

Не совсем так. Можно с помощью скриптов создать отдельное подключение и работать одновременно с двумя и более базами. Где-то на форуме есть примеры.

Визуальное программирование: блог и телеграм-канал.

Re: Работа с базой MySQL

k245 wrote:

Не совсем так. Можно с помощью скриптов создать отдельное подключение и работать одновременно с двумя и более базами. Где-то на форуме есть примеры.

это с SQLite можно, вроде до 10-и одновременных подключений, про MySql я не раз пытал Дмитрия

Re: Работа с базой MySQL

Дмитрий!! С праздником!
Если можно с локальными то и с удаленными что мешает Тема очень актуальная

12 (edited by pavlenko.vladimir.v 2023-02-23 12:30:10)

Re: Работа с базой MySQL

abgroup-artur wrote:

Дмитрий!! С праздником!
Если можно с локальными то и с удаленными что мешает Тема очень актуальная

МОЖНО ИСПОРТИТЬ БД !! на удаленном сервере
 
удаленную бд можно подключить на прямую, создайте на сервере доступ для вашего ip..
k245  говорит, что на форуме есть вариант двойного подключения, но я такого не знаю..
Как вариант используйте скрипт подключения и переключайтесь от одной бд к другой

13 (edited by abgroup-artur 2023-02-24 14:59:53)

Re: Работа с базой MySQL

Иногда читая отзывы по теме судорожно пытаешься понять зачем человек сам с собой разговаривает Что Вы такой крутой программист доказывайте среди коллег На форуме просьба отвечать на вопрос или помощь в решении проблемы а не заниматься самовосхвалением!

14 (edited by vovka3003 2023-02-25 08:05:05)

Re: Работа с базой MySQL

abgroup-artur wrote:

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

Интересно, это как..? Чужой сайт?

k245 wrote:

Где-то на форуме есть примеры.

Тут наверное...