<?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>HattaraTecLog &#187; MySQL</title>
	<atom:link href="http://teclog.hattara.info/?feed=rss2&#038;tag=mysql" rel="self" type="application/rss+xml" />
	<link>http://teclog.hattara.info</link>
	<description>LinuxネタとかPHPネタとかの技術ログ</description>
	<lastBuildDate>Tue, 18 Nov 2014 12:15:20 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.8</generator>
	<item>
		<title>mysql5.1のrename databaseが動かない</title>
		<link>http://teclog.hattara.info/?p=396</link>
		<comments>http://teclog.hattara.info/?p=396#comments</comments>
		<pubDate>Wed, 24 Apr 2013 15:17:09 +0000</pubDate>
		<dc:creator><![CDATA[hattara]]></dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://teclog.hattara.info/?p=396</guid>
		<description><![CDATA[久しぶりに更新したと思ったら、そんな事かよと思われそうだけど、 一応メモ。 mysql5.1.7からdatab [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>久しぶりに更新したと思ったら、そんな事かよと思われそうだけど、<br />
一応メモ。</p>
<p>mysql5.1.7からdatabaseを手軽にrenameできる<br />
<code>RENAME DATABASE from_database_name TO to_database_name;</code><br />
みたいのが使えるようになってるはずだったんだけど、<br />
手元のmysql5.1.46で使えないなーっておもってたら、mysql5.1.23で以降で使えないという記事を見つけました。</p>
<p>その後、@morygonzalezさんに脆弱性か何かで消えたらしいという情報を頂いて、<br />
英語のdocsみてみたら、ちゃんと書いてあった。</p>
<p>英語のdocs<br />
<a href="http://dev.mysql.com/doc/refman/5.1/ja/rename-database.html">http://dev.mysql.com/doc/refman/5.1/ja/rename-database.html</a></p>
<p>抜粋すると、</p>
<p>This statement was added in MySQL 5.1.7 but was found to be dangerous and was removed in MySQL 5.1.23.<br />
要するに、5.1.7で追加してみたけど、危険なのが見つかったから、5.1.23で外したよってこと見たいですね</p>
<p>use of this statement could result in loss of database contents, which is why it was removed.<br />
要するに、rename databaseを利用すると、データベースの内容が消える場合があるから、消しましたって事みたいですね</p>
<p>さらっと、怖い事書いてあるわけですね<br />
とりあえず、rename databaseは使わないぞ！<br />
バックアップに甘えはいけないぞ！<br />
という強い気持ちをメモとして残す。(すぐ忘れそう。。)</p>
<p>使えると思ったのは、日本語版のサイト側にまだ和訳されたremovedの文章が追加されてないからだけど、<br />
まあ、ちゃんと英語のみましょうねっていう事です。</p>
<p>日本語のdocs<br />
<a href="http://dev.mysql.com/doc/refman/5.1/en/rename-database.html">http://dev.mysql.com/doc/refman/5.1/en/rename-database.html</a></p>
<p>さあ、たいした事じゃないけど、メモしたので、今日はこの辺で。</p>
]]></content:encoded>
			<wfw:commentRss>http://teclog.hattara.info/?feed=rss2&#038;p=396</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DB Error: mismatchがでたぞ!!</title>
		<link>http://teclog.hattara.info/?p=73</link>
		<comments>http://teclog.hattara.info/?p=73#comments</comments>
		<pubDate>Thu, 02 Apr 2009 09:17:38 +0000</pubDate>
		<dc:creator><![CDATA[hattara]]></dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[エラー]]></category>
		<category><![CDATA[プレースホルダ]]></category>

		<guid isPermaLink="false">http://teclog.hattara.info/?p=73</guid>
		<description><![CDATA[php経由でMysqlに接続して処理してたときに なんでか理由がわからないけどエラーがでた。 DB Error [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>php経由でMysqlに接続して処理してたときに<br />
なんでか理由がわからないけどエラーがでた。</p>
<blockquote><p>DB Error: mismatch</p></blockquote>
<p>試した感じからすると、where句の内容に問題があるようだ。</p>
<p>【エラーが出る例】</p>
<blockquote><p>select * from table where column != ? ;</p></blockquote>
<p>　  ※「?」はプレースホルダしてるから。<br />
　　　ちなみにSSH経由でmysqlコマンドで接続して実行するとエラーにならない。</p>
<p>【エラーが出ない例】</p>
<blockquote><p>　select * from table where column <> ? ;</p></blockquote>
<p>　  ※これだとエラーにならないわけです。</p>
<p>なんでですかね？<br />
　phpとの相性？<br />
　プレースホルダ絡み？<br />
　phpの書き方に問題があった？</p>
<p>ちょっとわからないけど、備忘録として残しておきます。<br />
知ってる人いたら、コメントください。</p>
]]></content:encoded>
			<wfw:commentRss>http://teclog.hattara.info/?feed=rss2&#038;p=73</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQLで&#8221;The used SELECT statements have a different number of columns&#8221;</title>
		<link>http://teclog.hattara.info/?p=71</link>
		<comments>http://teclog.hattara.info/?p=71#comments</comments>
		<pubDate>Fri, 27 Mar 2009 11:22:34 +0000</pubDate>
		<dc:creator><![CDATA[hattara]]></dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://teclog.hattara.info/?p=71</guid>
		<description><![CDATA[PHP＆MySQLでSQLを書いてたときに、 &#8220;The used SELECT statement [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>PHP＆MySQLでSQLを書いてたときに、</p>
<blockquote><p>&#8220;The used SELECT statements have a different number of columns&#8221;</p></blockquote>
<p>みたいなエラーがでました。<br />
グーグル先生に聞いたところ、<a href="http://dev.mysql.com/doc/refman/4.1/ja/error-returns.html">MySQL本家サイト</a>にも記述がありました。</p>
<p>理由としては、<br />
UNIONを利用していて、片方だけにしか特定のカラムがない場合にでるようです。<br />
出力カラムの数を数えるのと、カラム名を確認してみたらいいんじゃないでしょうか。</p>
<p>僕は単純にカラム数(column)がたりませんでした。</p>
<p>注意力が足りなくて、スミマメーン！</p>
]]></content:encoded>
			<wfw:commentRss>http://teclog.hattara.info/?feed=rss2&#038;p=71</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Commitは命じゃ!!</title>
		<link>http://teclog.hattara.info/?p=63</link>
		<comments>http://teclog.hattara.info/?p=63#comments</comments>
		<pubDate>Wed, 03 Dec 2008 09:47:01 +0000</pubDate>
		<dc:creator><![CDATA[hattara]]></dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://teclog.hattara.info/?p=63</guid>
		<description><![CDATA[PhpでMysql(innodb)を利用している場合に、 すごくはずかしい失態をおかしたので、 繰り返さないよ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>PhpでMysql(innodb)を利用している場合に、<br />
すごくはずかしい失態をおかしたので、<br />
繰り返さないように、恥を公開しておこう。</p>
<blockquote><p>autoCommit(false);</p></blockquote>
<p>としてたわけですよ。<br />
で、id を auto_increment するようなテーブルが複数あり、<br />
それらを、insertとかしてたわけですよ。</p>
<p>でも、なぜかDBが更新されないわけですよ。</p>
<blockquote><p>mysql_insert_id();</p></blockquote>
<p>の関数を利用して直前のSQLのauto_incrementのIDを引っ張るわけですが、<br />
これが、ちゃんとに取得できるわけですよ。<br />
id が 100とかなってても、100のIDのレコードがテーブルに存在しないわけです。</p>
<p>もう全然わからないと思っていたところ、</p>
<blockquote><p>commit()</p></blockquote>
<p>部分を気持ちよく、綺麗さっぱりコメントアウトしてたわけです。<br />
そりゃー　動くわけないですがな。</p>
<p>中途半端にまともなIDなんて返してくれちゃうから、<br />
余計あせっちまいましたよ。</p>
<p>と、いったところで、自分のinnodbの扱いの認識不足と、<br />
注意力不足が招いた結果ですけどね。。</p>
]]></content:encoded>
			<wfw:commentRss>http://teclog.hattara.info/?feed=rss2&#038;p=63</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQLでtableのカラム名(column)を調べる</title>
		<link>http://teclog.hattara.info/?p=57</link>
		<comments>http://teclog.hattara.info/?p=57#comments</comments>
		<pubDate>Thu, 20 Nov 2008 09:30:34 +0000</pubDate>
		<dc:creator><![CDATA[hattara]]></dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[column]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://teclog.hattara.info/?p=57</guid>
		<description><![CDATA[久しぶりのエントリになりましたが、 最近多様するんだけど、覚えるほどでもないので、 メモとして残しておくことに [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>久しぶりのエントリになりましたが、<br />
最近多様するんだけど、覚えるほどでもないので、<br />
メモとして残しておくことに。</p>
<p>SSHのターミナルとかから</p>
<blockquote><p>
mysql -h [host_name] -u [user_name] -p [database_name]
</p></blockquote>
<p>とかで接続している場合に、データが1件もないテーブルに向けて、<br />
以下のように select をしても、0件という状態しかわからない。</p>
<blockquote><p>
select * from [table_name]
</p></blockquote>
<p>こんなときに、そのtableの中に、なんという名前のカラム(column?)があって<br />
どういう型(intとかvarcharとか)になっているのかってのを<br />
知りたいなって思うことありませんか??</p>
<p>僕はあります。<br />
でも、AccessとかCSEで接続すると重いので、<br />
DB操作系は、なるべくターミナルからやりたいわけですよ。</p>
<p>そんなときに活躍するのが、</p>
<blockquote><p>
show fields from [table_name];
</p></blockquote>
<p>これはいいですね。<br />
これで、そのテーブルにどんなカラムがあって、<br />
どんな型になっているか、まるわかりです。</p>
<p><a href="http://px.a8.net/svt/ejp?a8mat=U70LG+CVSQKI+5WS+BWVTD&#038;a8ejpredirect=http%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F%25E8%25A9%25B3%25E8%25A7%25A3MySQL-%25E3%2582%25B5%25E3%2583%25BC%25E3%2582%25B7%25E3%2583%25A3%25E3%2583%25BB%25E3%2583%2591%25E3%2583%2581%25E3%2582%25A7%25E3%2583%2595-9784873113432%2Fitem%2F5136616%2F" target="_blank"></p>
<p style="text-align:center">MySQLのおすすめ書籍</p>
<p><img border="0" alt="" src="http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8731/87311343.jpg?_ex=200x200&#038;s=2&#038;r=1"></a><br />
<img border="0" width="1" height="1" src="http://www14.a8.net/0.gif?a8mat=U70LG+CVSQKI+5WS+BWVTD" alt=""></p>
]]></content:encoded>
			<wfw:commentRss>http://teclog.hattara.info/?feed=rss2&#038;p=57</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQLでテーブルをコピー＆リネーム</title>
		<link>http://teclog.hattara.info/?p=51</link>
		<comments>http://teclog.hattara.info/?p=51#comments</comments>
		<pubDate>Thu, 30 Oct 2008 10:02:35 +0000</pubDate>
		<dc:creator><![CDATA[hattara]]></dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://teclog.hattara.info/?p=51</guid>
		<description><![CDATA[MySQLを利用していて、テーブルをリネームしてみたくなったり、 コピーしてみたくなったりすることがありますよ [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>MySQLを利用していて、テーブルをリネームしてみたくなったり、<br />
コピーしてみたくなったりすることがありますよね。</p>
<p>なので、一応まとめときます。</p>
<p>【テーブルリネーム】</p>
<blockquote><p>
RENAME TABLE before_table_name TO after_table_name;</p>
<p>例：<br />
　　変更前のテーブル名が　「tec」　で<br />
　　変更後のテーブル名を　「log」 にしたい場合には、</p>
<p>    RENAME TABLE tec to log;
</p></blockquote>
<p>次に特定のテーブルをコピーしたい場合です。</p>
<p>【テーブルコピー】</p>
<blockquote><p>
CREATE TABLE new_table AS SELECT * FROM old_table;</p>
<p>例1：<br />
　　コピー元のテーブル名が　「apple」 で<br />
　　コピー先「新規作成」のテーブル名が　「melon」の場合には、</p>
<p>    CREATE TABLE melon AS SELECT * FROM apple;</p>
<p>例2:<br />
    特定の条件のもののみコピーしたい場合には WHERE句で指定して<br />
　　コピーすることもできます。</p>
<p>　　コピー元のテーブル名が　「all」 で<br />
　　コピー先「新規作成」のテーブル名が　「now」で<br />
　　「Year」カラムが「2008」のもののみ抜き出す場合には、</p>
<p>　　CREATE TABLE now AS SELECT * FROM all WHERE Year = &#8217;2008&#8242;;
</p></blockquote>
<p>というような形になりますね。</p>
<p>ということで、久々の更新はこんな感じで。</p>
<p><a href="http://px.a8.net/svt/ejp?a8mat=U70LG+CVSQKI+5WS+BWVTD&#038;a8ejpredirect=http%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F%25E8%25A9%25B3%25E8%25A7%25A3MySQL-%25E3%2582%25B5%25E3%2583%25BC%25E3%2582%25B7%25E3%2583%25A3%25E3%2583%25BB%25E3%2583%2591%25E3%2583%2581%25E3%2582%25A7%25E3%2583%2595-9784873113432%2Fitem%2F5136616%2F" target="_blank"></p>
<p style="text-align:center">MySQLのおすすめ書籍</p>
<p><img border="0" alt="" src="http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8731/87311343.jpg?_ex=200x200&#038;s=2&#038;r=1"></a><br />
<img border="0" width="1" height="1" src="http://www14.a8.net/0.gif?a8mat=U70LG+CVSQKI+5WS+BWVTD" alt=""></p>
]]></content:encoded>
			<wfw:commentRss>http://teclog.hattara.info/?feed=rss2&#038;p=51</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQLの更新系SQLを省略する(autoExecute)</title>
		<link>http://teclog.hattara.info/?p=37</link>
		<comments>http://teclog.hattara.info/?p=37#comments</comments>
		<pubDate>Fri, 10 Oct 2008 09:55:26 +0000</pubDate>
		<dc:creator><![CDATA[hattara]]></dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[更新]]></category>

		<guid isPermaLink="false">http://teclog.hattara.info/?p=37</guid>
		<description><![CDATA[MySQLでinsertとかUpdateとかするときに、 SQLをかかずにサクサクやる方法があるそうな。 その [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>MySQLでinsertとかUpdateとかするときに、<br />
SQLをかかずにサクサクやる方法があるそうな。<br />
その名も「autoExecute」なり。</p>
<p>Insertしたい場合には、以下のような書き方になるようです。</p>
<blockquote><p>
$test1 = &#8220;test&#8221;;<br />
$table = &#8220;mysql_test_table&#8221;</p>
<p>$Connect = DB::connect($Dsn);<br />
if (DB::iserror($Connect)){<br />
    die($Connect->getMessage());<br />
}</p>
<p>$Value = array(<br />
			&#8216;name&#8217;   => &#8216;hattara&#8217;,<br />
			&#8216;domain&#8217; => &#8216;teclog.hattara.info&#8217;,<br />
			&#8216;col1&#8242;   => $test1,<br />
			&#8216;col2&#8242;   => &#8216;test2&#8242;<br />
		);</p>
<p>$Result = $Connect->autoExecute($table, $Value, DB_AUTOQUERY_INSERT);</p>
<p>if (PEAR::isError($Result)) {<br />
    die($res->getMessage());<br />
}</p>
<p>$Connect->disconnect();
</p></blockquote>
<p>Updateしたい場合には、以下のような書き方になるようです。</p>
<blockquote><p>
$test1 = &#8220;test&#8221;;<br />
$table = &#8220;mysql_test_table&#8221;<br />
$xxxx = &#8220;xxxxx&#8221;</p>
<p>$Connect = DB::connect($Dsn);<br />
if (DB::iserror($Connect)){<br />
    die($Connect->getMessage());<br />
}</p>
<p>$Value = array(<br />
			&#8216;name&#8217;   => &#8216;hattara&#8217;,<br />
			&#8216;domain&#8217; => &#8216;teclog.hattara.info&#8217;,<br />
			&#8216;col1&#8242;   => $test1,<br />
			&#8216;col2&#8242;   => &#8216;test2&#8242;<br />
		);</p>
<p>$Where = &#8220;col1 = &#8216;abcde&#8217; AND col2 = &#8216;&#8221; . $xxxx . &#8220;&#8216;&#8221;;</p>
<p>$Result = $db->autoExecute($table, $Value, DB_AUTOQUERY_UPDATE, $Where);</p>
<p>if (PEAR::isError($Result)) {<br />
    die($res->getMessage());<br />
}</p>
<p>$Connect->disconnect();
</p></blockquote>
<p>まあ、要するに、</p>
<blockquote><p>
autoExecute(<br />
                  <テーブル名>,<br />
                  <変更カラム名と値の連想配列>,<br />
                  <処理指定>,<br />
                  < updateならwhereがあれば><br />
                );
</p></blockquote>
<p>となりますね。<処理指定>の場所には、</p>
<blockquote><p>
　　insertなら「DB_AUTOQUERY_INSERT」<br />
　　updateなら「DB_AUTOQUERY_UPDATE」
</p></blockquote>
<p>が入るわけです。</p>
<p>ただし、残念でならないのが、updateをする場合に、where句を指定できるのですが、<br />
これがプレースホルダに対応していない。<br />
なので、上記のwhereの部分で、変数部分にはエスケープ処理を入れないといけない。<br />
なんか、あと一味足りない感じですね。</p>
<p>参考元：<br />
<a href="http://sane.justblog.jp/blog/2007/06/autoprepareauto_40a7.html">「實松アウトプット」さん >> autoPrepareとautoExecuteのwhere句</a></p>
]]></content:encoded>
			<wfw:commentRss>http://teclog.hattara.info/?feed=rss2&#038;p=37</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
