Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

ВОПРОС: Как подключить один магазин к разным БД Mysql ?


Recommended Posts

В CMS Opencart подключение к БД MySQL проходит через файл config.php где и указываются данные к ОДНОЙ базе MySQL.

Как подключить ДВЕ базы MySQL ?

Например:

Есть два магазина на движке opencart 1.5.3.1, каждый из них использует свою БД MySQL и свой файл config.php

Нужно сделать что бы из второго магазина было подключение к БД первого магазина, а именно таблицы 'customer', тоесть информация о покупателях общая для двух магазинов.

При этом удалены все возможные обращения к БД из личного кабинета покупателя, дабы избежать обращение к разным БД.

Вариант с вложенными магазинами (что предусмотренно в движке OpenCart) не подходит из-за недостатка в качественной SEO оптимизации магазина и использование только одного домена.

Я отдаю себе отчёт что нагрузка на сервер увеличится...

Змінено користувачем YuZi
Надіслати
Поділитися на інших сайтах


а не проще будет периодически делать импорт экспорт этих таблиц?

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

Надіслати
Поділитися на інших сайтах


В CMS Opencart подключение к БД MySQL проходит через файл config.php где и указываются данные к ОДНОЙ базе MySQL.

Как подключить ДВЕ базы MySQL ?

index.php

// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);
// Database 2

$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);

$registry->set('db2', $db2);

Надіслати
Поділитися на інших сайтах

Добавил в файл index.php два подключения к БД:

// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);


// Database 2
$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);
$registry->set('db2', $db2);

а также прописал в файле config.php данные к подключению двух БД:

// DB
define('DB_DRIVER', 'mysql');
define('DB_HOSTNAME', 'localhost');
define('DB_USERNAME', '111);
define('DB_PASSWORD', '1234567890');
define('DB_DATABASE', '111');
define('DB_PREFIX', '111_');


// DB2
define('DB_DRIVER2', 'mysql');
define('DB_HOSTNAME2', 'localhost');
define('DB_USERNAME2', '222');
define('DB_PASSWORD2', '1234567890');
define('DB_DATABASE2', '222');
define('DB_PREFIX2', '222_');

теперь Магазин Умер... Не выдает никаких ошибок, только чистый белый фон,

Что я не так сделал или что-то где-то надо дописать еще?

П.С. Использую Opencart 1.5.3.1

Надіслати
Поділитися на інших сайтах


Нужно сделать что бы из второго магазина было подключение к БД первого магазина, а именно таблицы 'customer', тоесть информация о покупателях общая для двух магазинов.

Есть рабочие архитектурные решения много ИМ на одной базе, а один магазин к 2 базам что-то Вы перемудриваете :) имхо

Надіслати
Поділитися на інших сайтах


Есть рабочие архитектурные решения много ИМ на одной базе, а один магазин к 2 базам что-то Вы перемудриваете :) имхо

Приведите пожалуйста пример таких архитектурных решений, или имеется ввиду одна БД с разными префиксами для каждого ИМ ?
Надіслати
Поділитися на інших сайтах


Настройте репликацию между площадками, как вариант

из всего выше сказанного я знаю ДВА СЛОВА: "настройте" и "вариант" =))

Что такое репликация между площадками?

Надіслати
Поділитися на інших сайтах


Либо оба ИМ к 1С Бухгалтериии и обрабатывать там.

Очень дорого получается если учесть все моменты:

- покупка самой платформы 1С

- установканастройка платформы

- программинг конфигураций под конкретные запросы

- обновленияподдержка ПО

- и т.д.

Надіслати
Поділитися на інших сайтах


из всего выше сказанного я знаю ДВА СЛОВА: "настройте" и "вариант" =))

Что такое репликация между площадками?

Тогда забудьте, вам это не подойдет.

Надіслати
Поділитися на інших сайтах

теперь Магазин Умер... Не выдает никаких ошибок, только чистый белый фон,

Что я не так сделал или что-то где-то надо дописать еще?

П.С. Использую Opencart 1.5.3.1

у меня этот вариант работает. разбирайся в этом направлении
Надіслати
Поділитися на інших сайтах

у меня этот вариант работает. разбирайся в этом направлении

Вы правы, все проверил - все работает, вот только подключается только одна БД, та которая стоит последней в списке.

если вот так:

// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);

// Database 2
$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);
$registry->set('db2', $db2);
то идет подключение всего магазина к базе БД2

а если вот так:

// Database 2
$db2 = new DB(DB_DRIVER2, DB_HOSTNAME2, DB_USERNAME2, DB_PASSWORD2, DB_DATABASE2);
$registry->set('db2', $db2);
// Database
$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$registry->set('db', $db);
То к первой...

В итоге одна база задействуется...

Надіслати
Поділитися на інших сайтах


  • 1 year later...

если еще интересно... мало ли))) 

чтобы это исправить, нужно в /system/database/mysql.php

в функции дописать mysql_connect(..., $password, TRUE);

 

и тогда делайте сколько угодно подключений.

 

---

Выпрямляем OpenCart...

Надіслати
Поділитися на інших сайтах


  • 1 year later...

у меня этот вариант работает. разбирайся в этом направлении

У меня он тоже не убивает сайт: возможно проблема хостинга или сервера,

Но никаких результатов не дает: товары из второй базы не берутся

Надіслати
Поділитися на інших сайтах


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

 

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

Змінено користувачем halfhope
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.