Страница 1 из 1

решение для linux

СообщениеДобавлено: 14 фев 2013, 15:20
Stas_vl
Есть ли решение для JcTradе под LINUX?

Re: решение для linux

СообщениеДобавлено: 18 фев 2013, 10:23
Romka
Нет

Re: решение для linux

СообщениеДобавлено: 12 мар 2013, 15:56
Stas_vl
Имеется программа JcTrade(лицензия!!!) (версия 3.3.2 от 06.03.2013) работающая на ПК с MS Windows XP SP3. Возникла необходимость создания копии базы на ПК с ОС Linux/MySQL Ver 14.14 Distrib 5.5.29. при попытке создания базы из резервной копии, созданного стандартными средствами программы JcTrade(Создание резервной копии), возникла ошибка импорта базы ERROR 1049 (42000) at line 7: Unknown database 'autoshop'

1) Какое решение данной проблемы???
2) В какой кодировке по умолчанию создается база в JcTrade(utf-8,koi8-r,win cp-1251)???

Re: решение для linux

СообщениеДобавлено: 14 мар 2013, 10:58
Romka
Ваш MySQL вряд ли не подойдет. JcTrade работает с версией
5.0.51, а у вас 5.5.29. С более поздними версиями чем
5.0.51 могут быть проблемы.
Создать базу из резервной копии не получится, так как в ней только
структура и данные, но нет создания самой базы данных.
Поэтому и появляется ошибка про неизвестную базу данных "autoshop",
потому что ее нет, а скрипт в резервной копии пытается в "autoshop"
создать таблицы.
Кодировка cp1251.
Код по созданию базы данных есть в файле struct.sql. Найти его можно в
папке с JcTrade (C:\Program Files\JcTrade Pro\struct.sql)

Re: решение для linux

СообщениеДобавлено: 21 мар 2013, 16:25
b1rdex
Создать базу из резервной копии не получится, так как в ней только
структура и данные

Мне дали резервную копию, в ней были только данные…

В общем, завёл базу на debian/testing. Пришлось поиграться с установкой mysql-5.0.51b из сорцов, так как в системе уже был установлен 5.5. А с 5.5 эта чудесная программа работать не умеет (протокол другой).

Но всё работает. Установку расписал в блоге, так как довольно много текста: http://stuff-coding.blogspot.ru/2013/03/mysql-50-debiantesting-mysql-55.html

Важный момент: архивная база может иметь структуру, отличную от struct.sql. У меня, например, база была 3.0.16 и при импорте не совпадало количество полей в некоторых таблицах. На всякий случай вот дамп структуры: http://pastebin.com/mjdFuUn1

Кстати, если всё-таки решите делать импорт из struct.sql, там есть косяк с триггерами. Sql manager был слишком стар и не умел писать слово delimiter. В итоге все триггеры дохнут с ошибкой при импорте.

Решение:
Код: Выделить всё
DELIMITER //
-- код создания триггера
//
DELIMITER ;


Нагляднее можно увидить в моём дампе на пастебине.
Совсем забыл: нужно руту будет дать возможность подключения с хостов отличных от 127.0.0.1.

Всем спасибо, все свободны.

Re: решение для linux

СообщениеДобавлено: 22 мар 2013, 04:48
b1rdex
Ещё один забавный прикол, который был обнаружен сегодня при тестировании: jc, выпиливая лобзикому эту несуразную БД, полагалась на системно-зависимое поведение mysql относительно регистронезависимости имён таблиц и полей. А linux, как мы с вами знаем, регистрозависим.

Пример маразма:
Код: Выделить всё

FROM barcode
А в базе таблица именована капсом. А ниже идёт запрос таблицы с капсом :-D

Подробности — http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html
Вылечивание:
1. Добавляем --lower-case-table-names=1 при запуске mysqld
2. Выполняем чудесный SQL скрипт, который переименовывает всё принудетельно lowercase'ом
Код: Выделить всё
select concat('rename table ', table_name, ' to ' , lower(table_name) , ';') from information_schema.tables where table_schema = 'autoshop';
3. Перезапускаем сервер mysql

Профит.