Category Archives: Базы данных

Урок 8 Вьюверы и хранимые процедуры MySQL

Вьюверы MySQL

 

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и интерьер

Проблемы с кодировкой в MySQL 5

Столкнулся с проблемой кодировки при переходе из MySQL 4 в MySQL 5.

Это вечная проблема, которая возникает при переходе из одной версии MySQL в другую и связана с поддерживаемыми кодовыми страницами.
При переходе из MySQL 3 в MySQL 4 была проблема с кодировками, т.к. в MySQL 3 они не указывались, а в MySQL 4 стали указываться.
При переходе же из версии MySQL 4 в MySQL 5 проблема связана с тем, что в 5-й версии уже используется универсальная кодировка utf-8.

 

В этом же форуме, я хочу подбить определённый результат, как эту проблему решить.

1. Прежде всего, нужно указать по умолчанию русские кодировки.
2. После вызова коннекта в PHP необходимо указать, что кодировка, например, cp1251

Так, например, в phpNuke я указал в файле mainfile.php после коннекта:

// Rudjuk 24.06.2007 Change Error Code
if ($db){
$db->sql_query(«set names ‘cp1251′»);
}

После этого должно работать.
Кстати, при переносе данных из одного сервера, скажем MySQL 4 на другой с MySQL 5 следует обязательно после коннекта к базе (вначале дампа) указать:
Код
SET NAMES CP1251

Еще осталась проблема с автоматическим определением кодировки.
Почему-то по умолчанию определяется на странице, что кодировка utf-8, хотя указано явно
Код
< meta http-equiv=»content-type» content=»text/html; charset=windows-1251″ />

В apache2 указывается кодировка по умолчанию в файле /etc/apache2/conf.d/charset, нужно просто вместо UTF-8 указать

AddDefaultCharset windows-1251

Что и говорить проблемы с кодировкой — часто встречаемая проблема.

Как её решить, прекрасно описано в статье: Решение проблем с кодировкой

Какая кодировка настроена в MySQL вы можете узнать с помощью запроса:
Код
SHOW VARIABLES LIKE ‘character_set_client’;

Кроме того, когда создаёте базу и таблицы не забывайте указывать кодировки, например:
Код
CREATE DATABASE inv2_neru CHARACTER SET cp1251 COLLATE cp1251_bin COLLATE cp1251_bin;
^
CREATE TABLE ibf_admin_login_logs (
admin_id int(10) NOT NULL auto_increment,
admin_ip_address varchar(16) NOT NULL default ‘0.0.0.0’,
admin_username varchar(40) NOT NULL default »,
admin_time int(10) unsigned NOT NULL default ‘0’,
admin_success int(1) unsigned NOT NULL default ‘0’,
admin_post_details text,
PRIMARY KEY (admin_id),
KEY admin_ip_address (admin_ip_address),
KEY admin_time (admin_time)
) TYPE=MyISAM AUTO_INCREMENT=84 CHARACTER SET cp1251 COLLATE cp1251_bin;
^

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и интерьер

Дизайн интерьеров

Восстановление баз данных MySQL

Довольно часто базы данных MySQL «ломаются». В результате, приходится ремонтировать. Поломки баз данных происходят из-за не корректных выключений компьютера или сбоев в компьютере, когда сервер не может корректно закрыть файл. Следует отметить, что не все базы данных удаётся поремонтировать, поэтому, рекомендуется делать резервные копии rolleyes.gif

Есть несколько способов восстановления баз данных. И все они требуют, чтоб никто в это время не обращался к таблице базы данных, иначе предсказать последствия не возможно.

Самый простой способ восстановления — выполнить SQL-команду:
repair table <название таблицы>;
Данная команда восстановит таблицу в большинстве случаев.

Иногда, приходится использовать специальную утилиту для восстановления таблиц:
myisamchk -r -q <название таблицы> — режим быстрого восстановления файлов.
myisamchk -r <название таблицы> — режим восстановления файла.
myisamchk -r -f -o <название таблицы> — режим восстановления в защищенном режиме файла.

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и интерьер

Дизайн интерьеров

Работа с Interbase (Firebird) в PHP

Если кто-нибудь пытался искать информацию, как работать с базами данных в PHP, то как правило, натыкалася на работу PHP с MySQL. По поводу же работы с Interbase информация достаточно скудная. Более того, как правило, поисковики выкидывают информацию не по работе PHP с Interbase, а по работе Delphi с Interbase :).

Прежде всего, необходимо включить поддержку Interbase в PHP. Как это делается, скажем в Linux Ubuntu я писал: http://nerusoft.blogspot.com/2007/12/interbase-firebird-apache-2-php-5-linux.html

Теперь рассмотрим основные операторы:
// Подключение к базе данных Interbase
$conn=ibase_connect($dbname,$dbuser,$dbpass);

// Выполнение SQL-запроса и получение информации из него (аналогично, как в MySQL):
$stmt = ‘select * from GET_ZAKAZID’;
$sth = ibase_query($conn, $stmt);
while ($row = ibase_fetch_object($sth)) {
$zakazn=$row->DOCN_RETURN;
}
ibase_free_result($sth); // Освобождаем ресурсы, после получения необходимых данных

// Выполнение простой вставки с помощью INSERT
$stmt = ‘INSERT INTO ZAKAZ(ZAKAZID, ZAKAZNA, TYPEZAKAZID’
.’,EMAIL, KONT_TELEPHONE, MTELEPHONE, ICQ’
.’) VALUES (‘
.$zakazn.»,'».trim(strip_tags(@$_POST[‘date_vipoln’])).»‘,».@$_POST[‘type_cli’] .»,'».trim(strip_tags(@$_POST[’email’])).»‘,'».trim(strip_tags(@$_POST[‘telephone’])) .»‘,'».trim(strip_tags(@$_POST[‘mtelephone’])).»‘,».trim(strip_tags(@$_POST[‘icq’]))
.»)»;
$sth = ibase_query($conn, $stmt) or die(ibase_errmsg());

// Закрываем коннект, после работы с базой данных
ibase_close($conn);

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Предметная визуализация

Компиляция UDF-библиотеки rfunc в Linux Ubuntu 8 для Firebird 2

Для того, чтоб скомпилировать библиотеку rfunc для firebird 2, необходимо произвести ряд действий.

1. Установить firebird не из репозитария, а так, как написано было в предыдущем сообщении.

2. В файле rfunc.conf исправить:
GDS_NAME = fbclient
#GDS_NAME = gds32

3. Исправить в файле makefile.linux:
#RFUNCIBUTILLIB = /usr/lib/libib_util.so
RFUNCIBUTILLIB = /opt/firebird/lib/libib_util.so

4. Исправить в том же файле:
#INCLUDE = -I/usr/include -I»$(IBASE)$(SDKDIR)/include»
INCLUDE = -I/usr/include -I/opt/firebird/include

5. Установить:
apt-get install uuid-dev

6. Прокомпилить:
make -f makefile.linux rfunc

7. Появится файл библиотеки под названием rfunc в том же каталоге, где Вы компилировали.
Можете его переименовать в rfunc.so — для соблюдения стандартов в названиях файлов.

8. Полученный файл переписать в /opt/firebird/UDF.

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

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и дизайн

Дизайн интерьеров

Интересный способ сравнения одинаковости баз в двух таблицах на разных серверах

Для сравнения двух таблиц в двух базах данных на разных серверах можно воспользоваться формированием значения по md5.

Например: select md5(array_send(array(select B from A order by 1))) as md5;

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)