Работа с БД под магенто

xarow

Постоялец
Регистрация
8 Фев 2013
Сообщения
54
Реакции
37
Здравствуйте!
Ситуация сложилась таким образом, что магенто сам 1.6 не создает таблицу в БД.

Это мелочь. Прошу помощи, кто сможет...
Есть необходимость создать такую таблицу в БД, но пишет :

SQL-запрос:
CREATE TABLE 'novaposhta_warehouse'(
`id` int( 10 ) unsigned NOT NULL ,
`city_id` int( 10 ) unsigned NOT NULL ,
`address_ru` varchar( 200 ) ,
`address_ua` varchar( 200 ) ,
`phone` varchar( 100 ) ,
`weekday_work_hours` varchar( 20 ) ,
`weekday_reseiving_hours` varchar( 20 ) ,
`weekday_delivery_hours` varchar( 20 ) ,
`saturday_work_hours` varchar( 20 ) ,
`saturday_reseiving_hours` varchar( 20 ) ,
`saturday_delivery_hours` varchar( 20 ) ,
`max_weight_allowed` int( 4 ) ,
`longitude` float( 10, 6 ) ,
`latitude` float( 10, 6 ) ,
`number_in_city` int( 3 ) unsigned NOT NULL ,
`updated_at` timestamp NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,
PRIMARY KEY ( `id` ) ,
CONSTRAINT FOREIGN KEY ( `city_id` ) REFERENCES 'novaposhta_city'( `id` ) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = utf8
Ответ MySQL: Для просмотра ссылки Войди или Зарегистрируйся
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''novaposhta_warehouse' (
`id` int(10) unsigned NOT NULL,
`city_id` int(10) u' at line 2

Может кто-то знает, в чем дело может быть и сможет помочь? Заранее, спасибо!!!
 
Название таблицы novaposhta_warehouse должно быть не в одинарных кавычках, а в символах `
 
Благодарствую! Вроде и делал так, как вы говорили, но все же где-то да допускал ошибку. Вопрос решен!!! Спасибо!
 
Чтобы не создавать новую тему, есть вопрос по базе данных для Magento.

За 1,5 года работы магазина сильно вырос объем базы данных и сейчас подходит уже к 1 Гбайту. Хостер уже выслал предупреждение, что лимит на объем 1 Гбайт и по достижении этого объема нарушится работоспособность.

Вопрос - что вызывает рост базы и как можно уменьшить ее объем?
 
Основным критерием роста БД являеются логи, импорт/экспорт. Для этого вам в БД надо создать SQL запрос и в него вписать это:
TRUNCATE dataflow_batch_export;
TRUNCATE dataflow_batch_import;
TRUNCATE log_customer;
TRUNCATE log_quote;
TRUNCATE log_summary;
TRUNCATE log_summary_type;
TRUNCATE log_url;
TRUNCATE log_url_info;
TRUNCATE log_visitor;
TRUNCATE log_visitor_info;
TRUNCATE log_visitor_online;
TRUNCATE report_viewed_product_index;
TRUNCATE report_compared_product_index;
TRUNCATE report_event;

Те строки, которые могут выдаваться ошибками(иногда бывает), можно убрать из списка повторив уже без строки. Такое желательно хотя бы раз в месяц делать. Если будет интересно рассмотреть более подробно, обратите внимание на таблицы : dataflow_batch_export, dataflow_batch_import, log_url, log_url_info, log_visitor - они перечислины в SQL запросе. Это основные таблицы которые забирают много места в БД.

Еще вопрос, от владельца магазина на Магенте. Вы содержите платформу на обычном хостинге? Если, да, то как происходит индексация, т-к у нас не получалось ее выполнить более с чем 10 тыс товаров. Только после перехода на VPS.
 
Спасибо, буду пробовать.

У нас виртуальный хостинг, но с отличным каналом и начинкой. Используем Европейского провайдера. По количеству товаров..нет у нас пока 10 000, поэтому и задался вопросом, почему база так разрослась.
 
в папке shell в корне сайта есть несколько полезных скриптов для обслуживания магазина.
один из них - log.php, предназначенный для управления статистикой.
запустите этот файл в командной строке консоли сервера (если у вас есть к ней доступ) и если на сервере установлено расширение php-cli (нужно для запуска скриптов в командной строке)
Код:
php log.php
выведется информация, чо можно делать с помощью этого скрипта
Код:
Usage:  php -f log.php -- [options]
        php -f log.php -- clean --days 1
 
  clean            Clean Logs
  --days <days>    Save log, days. (Minimum 1 day, if defined - ignoring system value)
  status            Display statistics per log tables
  help              This help
к примеру, при вводе команды status
Код:
php log.php status
он должен выдать табличку, в которой отображается кол-во строк в таблицах с логами и место, ими занимаемое
Код:
-----------------------------------+------------+------------+------------+
Table Name                        | Rows      | Data Size  | Index Size |
-----------------------------------+------------+------------+------------+
log_customer                      | 19        | 16.38Kb    | 16.38Kb    |
log_visitor                        | 31.50K    | 2.64Mb    | 0 b        |
log_visitor_info                  | 31.88K    | 5.78Mb    | 0 b        |
log_url                            | 33.88K    | 1.59Mb    | 1.59Mb    |
log_url_info                      | 33.23K    | 3.69Mb    | 0 b        |
log_quote                          | 25        | 16.38Kb    | 0 b        |
report_viewed_product_index        | 6.74K      | 311.30Kb  | 868.35Kb  |
report_compared_product_index      | 1          | 16.38Kb    | 81.92Kb    |
report_event                      | 7.41K      | 376.83Kb  | 835.58Kb  |
catalog_compare_item              | 1          | 16.38Kb    | 81.92Kb    |
-----------------------------------+------------+------------+------------+
Total                              | 144.70K    | 14.45Mb    | 3.47Mb    |
-----------------------------------+------------+------------+------------+

запросом
Код:
php log.php clean
таблицы очищаются и база худеет на глазах.



также можно управлять индексацией с помощью скрипта indexer.php и компиляцией с помощью compiler.php
 
На любом хостинге есть доступ как к ФТП, так и к БД, так что, два варианта на выбор.
 
У меня также есть вопрос по базе данных для Magento.

До недавнего времени большинство моих БД использовали MyISAM таблицы. Я настроил my.ini, чтобы использовать InnoDB таблицы
так как они должны присутствовать для того, чтобы запустить Magento. Мои вопросы: 1) Существует ли какои негативные эффект при перемешивании БД; 2) Какова есть хорошая практика в управлении БД, используя различные типы таблиц; 3) Нужно ли разделить эти БД и, если да, то как это сделать; 4) Как мы делаем backup БД с различными типами таблиц?
 
1) Существует ли какои негативные эффект при перемешивании БД; - нет, не существует. Для самого MySQL перемешивания нет - он работает с тем, что есть. Так же как и кодировки - база может быть в 1 кодировке, таблица в другой, а строка - в третьей.

2) Какова есть хорошая практика в управлении БД, используя различные типы таблиц; - см. выше - для MySQL без разницы с чем работать.

3) Нужно ли разделить эти БД и, если да, то как это сделать; - нет, не требуется

4) Как мы делаем backup БД с различными типами таблиц? - Так же, как и с одинаковыми типами. 1 ограничение: MyISAM можно просто физически скопировать файлы, InnoDB - только через экспорт в SQL-файлы (либо другие типы бекапов).
 
Назад
Сверху