<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>KARTz.RU &#187; базы данных</title>
	<atom:link href="http://kartz.ru/tag/%d0%b1%d0%b0%d0%b7%d1%8b-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85/feed/" rel="self" type="application/rss+xml" />
	<link>http://kartz.ru</link>
	<description>кушаешь морковь - встанет вновь и вновь</description>
	<lastBuildDate>Mon, 29 Aug 2016 08:06:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP Fatal error:  Call to undefined function sqlite_open()</title>
		<link>http://kartz.ru/2013/12/03/php-fatal-error-call-to-undefined-function-sqlite_open/</link>
		<comments>http://kartz.ru/2013/12/03/php-fatal-error-call-to-undefined-function-sqlite_open/#comments</comments>
		<pubDate>Tue, 03 Dec 2013 14:23:20 +0000</pubDate>
		<dc:creator>vasiliy</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[базы данных]]></category>
		<category><![CDATA[программы]]></category>

		<guid isPermaLink="false">http://kartz.ru/?p=2399</guid>
		<description><![CDATA[Проблема: имеется относительно старый скрипт на php, работающий с базами данных sqlite2.
В то же время на современных веб-серверах поддержка sqlite версии 2 отсутствует &#8211; эта версия считается устаревшей и не поддерживается (официально начиная с php 5.4, но фактически оно не работает уже в php 5.3.10 в ubuntu 12.04.2 lts). Работают только новые версии функций в [...]]]></description>
			<content:encoded><![CDATA[<p>Проблема: имеется относительно старый скрипт на php, работающий с базами данных sqlite2.<br />
В то же время на современных веб-серверах поддержка sqlite версии 2 отсутствует &#8211; эта версия считается устаревшей и не поддерживается (официально начиная с php 5.4, но фактически оно не работает уже в php 5.3.10 в ubuntu 12.04.2 lts). Работают только новые версии функций в объектно-ориентированной обёртке, а при вызове &laquo;старых&raquo; функций получаем ошибку, вынесенную в название поста.</p>
<p>Посмотрим, какие методы решения этой проблемы существуют.<span id="more-2399"></span></p>
<p>1. Самое правильное решение. Переписать скрипт под новую версию sqlite и сконвертировать базы данных.<br />
<code><br />
sqlite DB_name .dump | sqlite3 New_DB_name<br />
</code></p>
<p>2. Дописать костыль/заглушку/враппер для &laquo;старых&raquo; функций.<br />
<code></p>
<p>function sqlite_open($location,$mode)<br />
{<br />
    $handle = new SQLite3($location);<br />
    return $handle;<br />
}<br />
function sqlite_query($dbhandle,$query)<br />
{<br />
    $array['dbhandle'] = $dbhandle;<br />
    $array['query'] = $query;<br />
    $result = $dbhandle->query($query);<br />
    return $result;<br />
}<br />
function sqlite_fetch_array(&#038;$result,$type)<br />
{<br />
    #Get Columns<br />
    $i = 0;<br />
    while ($result->columnName($i))<br />
    {<br />
        $columns[ ] = $result->columnName($i);<br />
        $i++;<br />
    }</p>
<p>    $resx = $result->fetchArray(SQLITE3_ASSOC);<br />
    return $resx;<br />
}</p>
<p></code></p>
<p>3. Обратиться к репозиторию PECL (PEAR), где есть устаревшая библиотека.<br />
<code><br />
svn checkout http://svn.php.net/repository/pecl/sqlite/trunk sqlite<br />
</code></p>
<p>4. Подсунуть системе бинарники модулей из пакетов старых дистрибутивов. Главное &#8211; не перепутать архитектуру. Подсовывать надо сюда /usr/lib/php5/20090626</p>
<p>После этого вписать соответствующий файл в /etc/php5/conf.d</p>
<p>Скачать старенький пакет на момент написания статьи можно тут<br />
mirror.yandex.ru/ubuntu/pool/main/p/php5/php5-sqlite_5.3.2-1ubuntu4_amd64.deb<br />
(для другой архитектуры изменить имя пакета)</p>
]]></content:encoded>
			<wfw:commentRss>http://kartz.ru/2013/12/03/php-fatal-error-call-to-undefined-function-sqlite_open/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Не используйте htmlentities</title>
		<link>http://kartz.ru/2011/05/01/htmlentities/</link>
		<comments>http://kartz.ru/2011/05/01/htmlentities/#comments</comments>
		<pubDate>Sun, 01 May 2011 07:15:46 +0000</pubDate>
		<dc:creator>vasiliy</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[базы данных]]></category>
		<category><![CDATA[настройки]]></category>

		<guid isPermaLink="false">http://kartz.ru/?p=1068</guid>
		<description><![CDATA[Во всяком случае без явного указания кодировки. Я вчера перепутал её с htmlspecialchars и использовал для фильтрации вывода в браузер. В итоге полтора часа проковырялся с кодировками базы, пересоздавал и альтерил таблицы, мучался с SET NAMES UTF8, отлаживая скриптик из трёх строк.
Тем временем htmlentities бережно обрабатывала отдельно каждый байт юникодного текста. Хорошо, что догадался в [...]]]></description>
			<content:encoded><![CDATA[<p>Во всяком случае без явного указания кодировки. Я вчера перепутал её с htmlspecialchars и использовал для фильтрации вывода в браузер. В итоге полтора часа проковырялся с кодировками базы, пересоздавал и альтерил таблицы, мучался с SET NAMES UTF8, отлаживая скриптик из трёх строк.</p>
<p>Тем временем htmlentities бережно обрабатывала отдельно каждый байт юникодного текста. Хорошо, что догадался в исходник html заглянуть. Не используйте эту функцию.</p>
]]></content:encoded>
			<wfw:commentRss>http://kartz.ru/2011/05/01/htmlentities/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Дамп базы: что надо куда надо</title>
		<link>http://kartz.ru/2011/04/14/clever-dump/</link>
		<comments>http://kartz.ru/2011/04/14/clever-dump/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 22:35:47 +0000</pubDate>
		<dc:creator>vasiliy</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[базы данных]]></category>
		<category><![CDATA[настройки]]></category>

		<guid isPermaLink="false">http://kartz.ru/?p=1050</guid>
		<description><![CDATA[??мелся сервер БД. Возникло 2 проблемы:
1. Нужно создавать дамп на другую машину, так как при падении есть шанс потерять и базу, и дамп.
2. Нужно дампить всё, кроме одной таблицы. В ней википедия, которая огромна и меняется нечасто, и легко восстанавливается при сбое.

1. Пишем скрипт

header('Content-type: application/x-tar');
header('Content-Disposition: attachment; filename="dump-'.date('Y-m-d-H-i-s').'.sql.bz2"');
passthru('mysqldump --user=dumper --password=dumperpassword --all-databases --ignore-table=wiki.wiki --single-transaction &#124; bzip2 -czv [...]]]></description>
			<content:encoded><![CDATA[<p>??мелся сервер БД. Возникло 2 проблемы:</p>
<p>1. Нужно создавать дамп на другую машину, так как при падении есть шанс потерять и базу, и дамп.</p>
<p>2. Нужно дампить всё, кроме одной таблицы. В ней википедия, которая огромна и меняется нечасто, и легко восстанавливается при сбое.<br />
<span id="more-1050"></span></p>
<p>1. Пишем скрипт</p>
<p><code><br />
header('Content-type: application/x-tar');<br />
header('Content-Disposition: attachment; filename="dump-'.date('Y-m-d-H-i-s').'.sql.bz2"');<br />
passthru('mysqldump --user=dumper --password=dumperpassword --all-databases --ignore-table=wiki.wiki --single-transaction | bzip2 -czv -7');<br />
</code></p>
<p>2. Создаём пользователя dumper с привилегиями<br />
SELECT, SHOW DATABASES, LOCK TABLES, SHOW VIEW<br />
??з соображений безопасности не разрешаем ему ничего менять.</p>
<p>3. На другой машине в crontab добавляем удалённый вызов этого скрипта</p>
<p><code><br />
7 7 * * * wget http://server/secret-script.php<br />
</code></p>
<p>4. Меняем для себя пароль для dumper и имя секретного скрипта. Пользуемся</p>
]]></content:encoded>
			<wfw:commentRss>http://kartz.ru/2011/04/14/clever-dump/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Размеры Голема</title>
		<link>http://kartz.ru/2010/12/28/golem-size/</link>
		<comments>http://kartz.ru/2010/12/28/golem-size/#comments</comments>
		<pubDate>Tue, 28 Dec 2010 02:05:04 +0000</pubDate>
		<dc:creator>vasiliy</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[базы данных]]></category>
		<category><![CDATA[закон]]></category>
		<category><![CDATA[юмор]]></category>

		<guid isPermaLink="false">http://kartz.ru/?p=760</guid>
		<description><![CDATA[Наверно все знают о существовании таких справочно-информационных систем, как Гарант, Консультант-плюс etc. Они содержат практически все законы, подзаконные акты, обзоры практики итп.
Теперь цифры:
1. Война и мир (4 тома) — 3 Мб,
2. Толковый словарь Ожегова (один огромный том) — 26 Мб,
3. Большая Советская энциклопедия (30 огромных томов) — 500 Мб,
4. Русская Википедия (несжатая) — 6000 Мб,
5. [...]]]></description>
			<content:encoded><![CDATA[<p>Наверно все знают о существовании таких справочно-информационных систем, как Гарант, Консультант-плюс etc. Они содержат практически все законы, подзаконные акты, обзоры практики итп.</p>
<p>Теперь цифры:</p>
<p>1. Война и мир (4 тома) — 3 Мб,<br />
2. Толковый словарь Ожегова (один огромный том) — 26 Мб,<br />
3. Большая Советская энциклопедия (30 огромных томов) — 500 Мб,<br />
4. Русская Википедия (несжатая) — 6000 Мб,<br />
5. Гарант (заархивированный) — 27000 Мб,<br />
6. Консультант-плюс — около 36000 Мб.</p>
]]></content:encoded>
			<wfw:commentRss>http://kartz.ru/2010/12/28/golem-size/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Бухгалтерский sql запрос</title>
		<link>http://kartz.ru/2010/11/19/buh-sql/</link>
		<comments>http://kartz.ru/2010/11/19/buh-sql/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 08:24:36 +0000</pubDate>
		<dc:creator>vasiliy</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[базы данных]]></category>
		<category><![CDATA[шпоргалки]]></category>

		<guid isPermaLink="false">http://kartz.ru/?p=694</guid>
		<description><![CDATA[Есть таблица счетов accounts.
Столбцы aid и  aname — ид и название счёта.
Есть таблица операций operations.
Столбцы  ofrom  oto  price  ocount — откуда, куда, цена, количество.
Как одним запросом получить балланс? (mysql 5.0)


SELECT aname, sv FROM accounts LEFT JOIN
(
  SELECT c, sum(v) as sv FROM
  (
    SELECT oto [...]]]></description>
			<content:encoded><![CDATA[<p>Есть таблица счетов accounts.<br />
Столбцы aid и  aname — ид и название счёта.<br />
Есть таблица операций operations.<br />
Столбцы  ofrom  oto  price  ocount — откуда, куда, цена, количество.<br />
Как одним запросом получить балланс? (mysql 5.0)<br />
<span id="more-694"></span><br />
<code><br />
SELECT aname, sv FROM accounts LEFT JOIN<br />
(<br />
  SELECT c, sum(v) as sv FROM<br />
  (<br />
    SELECT oto as c,price*ocount as v FROM operations<br />
    UNION<br />
    SELECT ofrom as c,-1*price*ocount as v FROM operations<br />
  )<br />
  as ops GROUP BY c<br />
)<br />
as oc ON aid=c;<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://kartz.ru/2010/11/19/buh-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как создать базу данных и пользователя к ней</title>
		<link>http://kartz.ru/2010/11/19/mysql-create-user-database/</link>
		<comments>http://kartz.ru/2010/11/19/mysql-create-user-database/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 08:23:00 +0000</pubDate>
		<dc:creator>vasiliy</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[базы данных]]></category>
		<category><![CDATA[шпоргалки]]></category>

		<guid isPermaLink="false">http://kartz.ru/?p=692</guid>
		<description><![CDATA[
mysql -u root -p
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass1';
CREATE DATABASE db1;
grant all privileges on db1.* to user1@localhost;

]]></description>
			<content:encoded><![CDATA[<p><code><br />
mysql -u root -p</p>
<p>CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass1';</p>
<p>CREATE DATABASE db1;</p>
<p>grant all privileges on db1.* to user1@localhost;<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://kartz.ru/2010/11/19/mysql-create-user-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
