Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: LibreOffice-Base, 12.04: проблемы с кодировкой при подключении к базе MySQL  (Прочитано 5161 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pulchra

  • Автор темы
  • Участник
  • *
  • Сообщений: 155
    • Просмотр профиля
Такая проблема: всяким способом (odbc и напрямую mysql) через LibreOffice-Base подключаюсь к базе данных mysql, при этом киррилические символы отображаются в непонятно какой кодировке, пытался выбирать разные кодировки в свойствах подключения, но это ни к чему не приводит. Проблема возникла в ubuntu-12.04.
В ubuntu-10.04 (там стоит ООо-3.0) подобная проблемы не было: настройка подключения через odbc сразу давала отображение русских записей в правильной кодировке.
Где копать что-бы сделать правильную кодировку в LibreOffice-Base на ubuntu-12.04

Оффлайн volgautc

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
В 10.04 с родным ООо + ODBC всё отлично работает, но стоило поставить ООо3.1 от инфры та же проблема.
В 12.04 проблема, видимо, в связке родных LO и ODBC драйвера, тоже не смог победить.
Но через libreoffice-mysql-connector всё правильно работает (причём гораздо шустрее чем нативный в 10.04 с ООо3.1 от инфры).
После каждого переключения кодировок LO перезапускали?

Оффлайн pulchra

  • Автор темы
  • Участник
  • *
  • Сообщений: 155
    • Просмотр профиля
Цитировать
После каждого переключения кодировок LO перезапускали?
Да, только что попробовал с перезапуском, не вышло. Попробую, наверное снести LO и установить ООо от Sun...

Оффлайн volgautc

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Странно, что с нативным коннектором не выходит, у меня только с ним проблем не было вообще ни в каком офисе и в разных Ubuntuх.
Сам спросил - сам ответил: http://community.i-rs.ru/index.php/topic,11490.0.html
А у Вас...не?

П.С. http://volgautc.blogspot.com/ - "хлебных крошек" себе понаоставлял тогда, т.к. с сервером долго "радовался".
« Последнее редактирование: 14 Июня 2012, 10:44:37 от volgautc »

Оффлайн pulchra

  • Автор темы
  • Участник
  • *
  • Сообщений: 155
    • Просмотр профиля
Цитировать
А у Вас...не?
Примерно то же самое, но перекодировать БД пожалуй слишком: эта база от серверного приложедения web2project, и само по себе оно работает,на нем все проекты конторы, влезать в него не резон. К стати с удалением LO и установкой ООо из репозитария неувязка вышла:
dzhez@dzhez-desktop:~$ sudo apt-get install openoffice.org-base
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  libreoffice-base libreoffice-java-common
Предлагаемые пакеты:
  libreoffice-gcj
НОВЫЕ пакеты, которые будут установлены:
  libreoffice-base libreoffice-java-common openoffice.org-base
обновлено 0, установлено 3 новых пакетов, для удаления отмечено 0 пакетов, и 185 пакетов не обновлено.
Необходимо скачать 0 B/6 716 kB архивов.
После данной операции, объём занятого дискового пространства возрастёт на 15,9 MB.
вводишь в терминале oobase начинает загружаться LO-base. Круто...

Оффлайн volgautc

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Сначала надо LO удалить под корень, точно не помню уже. Тема была уже давненько.
А может дело в джаве всё? Тогда смена офиса не поможет, надо джаву другую. Но это мысль просто далёкого от IT человека.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
... перекодировать БД пожалуй слишком ...
С использованием phpmyadmin это не сложно.
В phpmyadmin есть экспорт и импорт БД. Поэтому можно мучать безболезненно.

Оффлайн pulchra

  • Автор темы
  • Участник
  • *
  • Сообщений: 155
    • Просмотр профиля
Вообще всё поломал... В том смысле что сторонний ООо 3.4 установился, но base пишет
Цитировать
Невозможно загрузить библиотеку программы libodbc.so (возможно она повреждена). Недоступен выбор источника ODBS
Если снести сторонний ООо и попытаться установить LO, то некоторые пакеты, например libreoffice-common устанавливаются с ошибками, и вообще ничего не работает... хе-хе Сторонний офис видимо нужно вычищать руками.

Цитировать
С использованием phpmyadmin это не сложно.
В phpmyadmin есть экспорт и импорт БД. Поэтому можно мучать безболезненно.
У меня еженедельно резервные копии БД делаются, их то мучить можно... Просто хочется приемлемого по времени и усилиям решения проблемы. Наивно конечно.MySQL запросы я обрабатывал в Calc, было удобно. Простым решением вопроса могло бы быть выгрузка результата запроса во внешний файл, phpmyadmin это может делать? А isql? Еще можно перезагружать натольную машину на 10.04 (я её, разумеется, не удалял), там всё настроено.

Вот, допустим, идея: пользовательский ~/.odbc.ini настроен на нужную базу, если ввести в терминале:
isql имя_настроек то осуществляется подключение к БД: +---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>
 
в терминале можно выполнить запрос mysql. Вот если бы его выгрузить во внешний файл с разделителем, то затем можно бы было открыть этот файл в calc и обработать запрос. Кто нибудь работал в этом ключе с isql?
« Последнее редактирование: 14 Июня 2012, 14:40:53 от pulchra »

Оффлайн volgautc

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Простым решением вопроса могло бы быть выгрузка результата запроса во внешний файл, phpmyadmin это может делать?
В Base можно сделать Представление на основе запроса. Оно, это представление, хранится в самой базе и phpmyadmin-ом можно экспортировать много куда:


П.С. Сейчас посмотрел, результаты запроса SQL тоже можно экспортировать.
« Последнее редактирование: 14 Июня 2012, 14:38:47 от volgautc »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Простым решением вопроса могло бы быть выгрузка результата запроса во внешний файл, phpmyadmin это может делать?
phpmyadmin предназначен для администрирования баз данных, а не для обработки результатов запросов.
Это несколько разные задачи.
При сохранение БД phpmyadmin создается файл с sql запросами создания таблиц, создания записей в таблицах.
Если полностью грохнуть БД, то вначале надо будет создать БД, пользователей с их правами-паролями, а потом уже выполнять загрузку сохраненной БД. Это геморройный вариант.
В основном бывает другой вариант.
Если испортились только данные (например, от замены кодировок, неудачных изменений в структурах таблиц или чрезмерной зачистки), то сразу можно выполнять загрузку сохраненной БД.

Оффлайн pulchra

  • Автор темы
  • Участник
  • *
  • Сообщений: 155
    • Просмотр профиля
Вот такой костыль (что-бы не перегружаться):
можно вывести результат sql запроса из isql во внешний файл утилитой script, затем открыть его в calc, в мастере экспорта calc указать нужные разделители. При этом в ячейках оказываются слишком много пробелов, но это уже решаемо малой кровью...
phpmyadmin позволяет экпортировать результат запроса непосредственно в файл calc, но тут тоже есть проблемы с кодировкой, пытался изменять настройки в поле "Сопоставление соединения с MySQL:", но кодировка осталась неизменной.

Оффлайн pulchra

  • Автор темы
  • Участник
  • *
  • Сообщений: 155
    • Просмотр профиля
В итоге придумал для себя такой костыль:
Разместил на серевере в папке /var/www/reports файл report_from_bd.php следующего содержания:
<?php 
// Вывод заголовка с данными о кодировке страницы
header('Content-Type: text/html; charset=utf-8');
// Настройка локали
setlocale(LC_ALL'ru_RU.65001''rus_RUS.65001''Russian_Russia. 65001''russian');
// Настройка подключения к базе данных
//mysql_query('SET names "utf8"');
$sdb_name "localhost";
$user_name "user_name";
$user_password "user_password";
$db_name "w2p_db";
// соединение с сервером базы данных
if (!$link mysql_connect($sdb_name,$user_name,$user_password))
 {
    echo 
"<br>Не могу соединиться с сервером базы данных!<br>";
    exit();
 }
// выбираем базу данных
if (!mysql_select_db($db_name$link))
{
    echo 
"<br>Не могу выбрать базу данных<br>";
    exit();
}
// строка запроса
$str_sql_query "SELECT user_tasks.user_id,user_tasks.task_id, tasks.task_description, task_start_date, projects.project_name, contacts.contact_display_name FROM user_tasks, tasks, projects, contacts WHERE user_tasks.user_id IN (23, 26, 27, 29) AND tasks.task_id=user_tasks.task_id AND tasks.task_project=projects.project_id AND projects.project_status=3 AND contacts.contact_id=projects.project_owner;";
// выполнение запроса
if (!$result mysql_query($str_sql_query$link))
{
    echo 
"<br>Не могу выполнить запрос<br>";
    exit();
}
// Код выгрузки 
//стандартный заголовок, которого обычно хватает
header('Content-Type: application/vnd.ms-excel; charset=utf-8');
header("Content-Disposition: attachment;filename=".date("c")."-export.csv");
header("Content-Transfer-Encoding: binary ");

// заголовок таблицы
echo "user_id|task_id|task_description|task_start_date|project_name|contact_display_name"."\n";
// вывод запроса mysql
while ($mas mysql_fetch_row($result))

    foreach (
$mas as $field)
    {
        echo 
""$field "|";
    }
    echo 
"\n";
}
// закрытие соединения с сервером базы данных
mysql_close($link);
?>
При выполнении оного (набрать в браузере: IP_сервера/reports/report_from_bd.php) на локальную машину загружается файл, который можно открыть в calc, и далее делать с ним всё что нужно.

 

Страница сгенерирована за 0.054 секунд. Запросов: 22.