<?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>по стопам webkill&#039;а &#187; yaml_db</title>
	<atom:link href="http://blog.lukmus.ru/tag/yaml_db/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lukmus.ru</link>
	<description>это наш химический дом для печальных жителей Земли</description>
	<lastBuildDate>Sat, 21 Oct 2023 19:10:13 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>rails 3. переход с sqlite3 на mysql</title>
		<link>http://blog.lukmus.ru/2011/10/24/rails-3-perehod-s-sqlite3-na-mysql/</link>
		<comments>http://blog.lukmus.ru/2011/10/24/rails-3-perehod-s-sqlite3-na-mysql/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 02:03:45 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[rake]]></category>
		<category><![CDATA[ROR]]></category>
		<category><![CDATA[ROR 3]]></category>
		<category><![CDATA[ruby on rails 3]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[yaml_db]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=1089</guid>
		<description><![CDATA[Существует гипотеза, что MySQL гораздо быстрее SQLite в многопользовательском приложении. Собственно, гипотеза подтверждается на всех тестах, что я видел, а также на моем собственном опыте. Подобный холивар, о том у кого длинее что быстрее можно слегкостью найти на Хабре. Весь описанный дальше процесс был проделан на Fedora 14.1 x64, однако, даю клык, что все тоже [...]]]></description>
			<content:encoded><![CDATA[<p>Существует гипотеза, что MySQL гораздо быстрее SQLite в многопользовательском приложении. Собственно, гипотеза подтверждается на всех тестах, что я видел, а также на моем собственном опыте. Подобный холивар, о том <span style="text-decoration: line-through;">у кого длинее</span> что быстрее можно слегкостью найти на Хабре. Весь описанный дальше процесс был проделан на Fedora 14.1 x64, однако, даю клык, что все тоже самое будет работать на федоре старше 11.<br />
<img class="aligncenter size-full wp-image-1090" title="post-3714-1248825341" src="http://blog.lukmus.ru/wp-content/uploads/2011/10/post-3714-1248825341.jpg" alt="" width="517" height="555" /><span id="more-1089"></span><br />
Далее я буду описывать все в том порядке, в каком делаю это я. Также я считаю, что именно такой порядок наиболее удобен для миграции с SQLite3 на MySQL.</p>
<h2>экспорт БД с sqlite3</h2>
<p>Прежде всего надо как-то сдампить старую БД на SQLite и хотелось бы это сделать без писания дополнительных скриптов. Для этого делаем нижеизложенное.<br />
Закидываем в Gemfile следующую строку:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">gem 'yaml_db'</pre></td></tr></table></div>

<p>И далее установим этот гем через bundle:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;"># </span><span style="color: #7a0874; font-weight: bold;">cd</span> rails_app <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> bundle <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>Этот гем даст некоторые новые rake&#8217;и для работы с БД:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ rake <span style="color: #660033;">-T</span>
...
rake db:create          <span style="color: #666666; font-style: italic;"># Create the database from ...</span>
rake db:data:dump       <span style="color: #666666; font-style: italic;"># Dump contents of database ...</span>
rake db:data:dump_dir   <span style="color: #666666; font-style: italic;"># Dump contents of database ...</span>
rake db:data:load       <span style="color: #666666; font-style: italic;"># Load contents of db/data...</span>
rake db:data:load_dir   <span style="color: #666666; font-style: italic;"># Load contents of db/data_dir ...</span>
rake db:drop            <span style="color: #666666; font-style: italic;"># Drops the database for the ...</span>
rake db:dump            <span style="color: #666666; font-style: italic;"># Dump schema and data to db/...</span>
rake db:fixtures:load   <span style="color: #666666; font-style: italic;"># Load fixtures into the current...</span>
rake db:load            <span style="color: #666666; font-style: italic;"># Load schema and data from ...</span>
rake db:migrate         <span style="color: #666666; font-style: italic;"># Migrate the database (options:...</span>
rake db:migrate:status  <span style="color: #666666; font-style: italic;"># Display status of migrations</span>
rake db:rollback        <span style="color: #666666; font-style: italic;"># Rolls the schema back to ...</span>
rake db:schema:dump     <span style="color: #666666; font-style: italic;"># Create a db/schema.rb file ...</span>
rake db:schema:load     <span style="color: #666666; font-style: italic;"># Load a schema.rb file into...</span>
rake db:seed            <span style="color: #666666; font-style: italic;"># Load the seed data from...</span>
rake db:setup           <span style="color: #666666; font-style: italic;"># Create the database, load...</span>
rake db:structure:dump  <span style="color: #666666; font-style: italic;"># Dump the database structure...</span>
rake db:version
...</pre></td></tr></table></div>

<p>Далее нижеприведенной командой экспортируем схему и содержание БД в <code>db/data.yml</code>.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;">$ </span>rake db:dump</pre></td></tr></table></div>

<p>Если БД слишком разрослась, можно попробывать вариант с <code>rake db:data:dump_dir</code>.</p>
<h2>поднимаем и настраиваем MySQL</h2>
<h3>MySQL</h3>
<p>Сразу же устанавливаем пакеты:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;"># </span><span style="color: #c20cb9; font-weight: bold;">yum install</span> mysql mysql-server mysql-devel ruby-mysql <span style="color: #660033;">-y</span></pre></td></tr></table></div>

<p>Далее прописываем во все тот же <code>Gemfile</code>:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">gem 'mysql2'</pre></td></tr></table></div>

<p>И опять бандлим:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;"># </span>bundle <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>Стартуем сервер MySQL.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;"># </span>service mysqld start</pre></td></tr></table></div>

<p>Заходим под рутом в MySQL:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">mysql <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-p</span></pre></td></tr></table></div>

<p>Если до этого руту был задан пароль, то его надо будет ввести, если это первый заход рута, то пароль пустой.<br />
А теперь создаем базу</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">CREATE</span> <span style="color: #990099; font-weight: bold;">DATABASE</span> railsdb CHARACTER <span style="color: #990099; font-weight: bold;">SET</span> utf8 <span style="color: #CC0099; font-weight: bold;">COLLATE</span> utf8_general_ci<span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>и пользователя, попутно назначая ему права на эту БД.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">GRANT</span> <span style="color: #990099; font-weight: bold;">ALL</span> <span style="color: #990099; font-weight: bold;">PRIVILEGES</span> <span style="color: #990099; font-weight: bold;">ON</span> railsdb.<span style="color: #CC0099;">*</span> <span style="color: #990099; font-weight: bold;">TO</span> <span style="color: #008000;">'railsuser'</span>@<span style="color: #008000;">'localhost'</span> IDENTIFIED BY <span style="color: #008000;">'railspass'</span> <span style="color: #990099; font-weight: bold;">WITH</span> <span style="color: #990099; font-weight: bold;">GRANT</span> <span style="color: #990099; font-weight: bold;">OPTION</span><span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>Команда выше дает права пользователю <code>railsuser</code> с паролем <code>railspass</code> на полный доступ к БД <code>railsdb</code> c локального хоста. Подробнее о правах и как их назначить читаем на <a rel="nofollow" href="http://dev.mysql.com/doc/" target="_blank">оффсайте</a>.</p>
<h3>настройка rails-приложения</h3>
<p>Открываем config/database.yml и заменяем настройки БД нужной секции на подобные (в моем случае это development):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="yml" style="font-family:monospace;">development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: railsdb
  pool: 5
  username: railsuser
  password: railspass
  host: localhost</pre></td></tr></table></div>

<p>Хочу предупредить, что табуляция перед параметрами, видимо, очень важна т.к. без этих табов сервер не стартанул, а с ними запустился на ура.<br />
Теперь импортируем схему и данные в БД.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;">$ </span>rake db:load</pre></td></tr></table></div>

<p>Стоит помнить, что команда загрузки дампа может быть и немного иной, все зависит от того какую команду экспорта дампа выбирали вы в на первом шаге этого поста. Ну вот и все.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2011/10/post-3714-1248825341.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2011/10/24/rails-3-perehod-s-sqlite3-na-mysql/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
