<?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>PHPK.org &#187; DB</title>
	<atom:link href="http://www.phpk.org/archives/category/articles/db/feed" rel="self" type="application/rss+xml" />
	<link>http://www.phpk.org</link>
	<description>PHP User Group</description>
	<lastBuildDate>Tue, 17 Jan 2012 17:17:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>InnoDB의 Clustered index</title>
		<link>http://www.phpk.org/archives/313</link>
		<comments>http://www.phpk.org/archives/313#comments</comments>
		<pubDate>Tue, 28 Jul 2009 10:44:48 +0000</pubDate>
		<dc:creator>ooti</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[DB]]></category>
		<category><![CDATA[ClusteredIndex]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.phpkorea.org/archives/313</guid>
		<description><![CDATA[Clustered index 에 대해 모두 잘 알고 계시리라 생각합니다만 오늘 팀 내에서 Clustered index 에 대한 이야기가 나와서 간단히 적어 보려 합니다. Index 와 Clustered index Index는 우리에게 매우 익숙합니다. 테이블을 생성한 후 많은 데이터를 빠르게 찾기 위해 Index를 생성합니다. PRIMARY KEY인 경우 자동으로 Index가 되고 그 외 컬럼은 임의로 지정해 주어야 합니다. 경우에 따라서는 [...]]]></description>
			<content:encoded><![CDATA[<p>Clustered index 에 대해 모두 잘 알고 계시리라 생각합니다만 오늘 팀 내에서 Clustered index 에 대한 이야기가 나와서 간단히 적어 보려 합니다.</p>
<h3>Index 와 Clustered index</h3>
<p>Index는 우리에게 매우 익숙합니다. 테이블을 생성한 후 많은 데이터를 빠르게 찾기 위해 Index를 생성합니다. PRIMARY KEY인 경우 자동으로 Index가 되고 그 외 컬럼은 임의로 지정해 주어야 합니다. 경우에 따라서는 2~3초 걸리던 SQL 쿼리도 0.몇 초 이내에 결과가 나오기도 합니다.</p>
<p>테이블의 Index는 아래 그림과 같이 Index에 포함된 컬럼이 일렬로 나열됩니다. 그런데 눈에 띄는 게 있습니다. No 가 1부터 4까지 순서대로 나열되어 있지 않습니다.&#160; MySQL에서 Index는 빠른 검색을 위한 목차를 만들 때 정렬을 하지 않고 나열만 합니다. 그렇기 때문에 Index 는 어떤 하나의 값을 찾는데 빠릅니다. 예) WHERE no=1000</p>
<p><a href="http://blog.phpkorea.org/files/20090728-191955.jpg"><img title="2009-07-28_191955" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="267" alt="2009-07-28_191955" src="http://blog.phpkorea.org/files/20090728-191955-thumb.jpg" width="317" border="0" /></a> </p>
<p>Clustered index는 컬럼을 컬럼의 값을 정렬해서 나열합니다. No 1, 2,3,4 … 처럼 Index 가 순서대로 생성되기 때문에 부분 전체를 구할 때 Non-clustered Index 에 비해서 빠른 결과를 기대할 수 있습니다. 예) WHERE no &gt; 1000. 대신에 INSERT 와 UPDATE, DELETE 를 수행할 때마다 Index 를 정렬해야 하기 때문에 Non-clustered Index 방식에 비해서 비용이 많이 듭니다.</p>
<p>Clustered index 는 InnoDB 에서 사용할 수 있습니다. InnoDB 엔진을 사용해서 테이블을 만들고 PRIMARY KEY를 지정하면 MySQL은 PRIMARY KEY로 지정된 컬럼에 대해 Clustered index 를 생성합니다. 따로 지정해 줄 필요는 없습니다. 단, <a title="SHOW INDEX" href="http://dev.mysql.com/doc/refman/5.1/en/show-index.html">SHOW INDEX</a>로 확인할 수는 없습니다. 만약 PRIMARY KEY 가 아닌 컬럼에 대해 Clustered index 를 생성하고자 한다면 먼저 NOT NULL을 지정하고 UNIQUE INDEX 를 생성하면 됩니다.</p>
<p>Clustered index 의 장점은 앞에서도 언급했듯이 정렬되어 있기 때문에 디스크 I/O를 줄일 수 있고 속도가 빠릅니다. 수백, 수천만건의 데이터를 가지고 있는 테이블에서 페이징과 같이 일부분의 집합을 얻고자 할 때엔 아래 그림과 같이 한번에 가져올 수 있기 때문입니다.</p>
<p><a href="http://blog.phpkorea.org/files/20090728-192013.jpg"><img title="2009-07-28_192013" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="292" alt="2009-07-28_192013" src="http://blog.phpkorea.org/files/20090728-192013-thumb.jpg" width="549" border="0" /></a> </p>
<p>Clustered index 로 지정되어 있는 컬럼은 가능하면 변경되지 않아야 경제적입니다. 잦은 변경은 재정렬로 인해 더 느려지거나 더 많은 부하를 일으킬 수 있을 테니까요.</p>
<p>참고 : <a title="Clustered and Secondary Indexes" href="http://dev.mysql.com/doc/refman/5.1/en/innodb-index-types.html">MySQL Clustered and Secondary Indexes</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpk.org/archives/313/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lock wait timeout exceeded 에러</title>
		<link>http://www.phpk.org/archives/294</link>
		<comments>http://www.phpk.org/archives/294#comments</comments>
		<pubDate>Mon, 13 Jul 2009 18:38:23 +0000</pubDate>
		<dc:creator>ooti</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[DB]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[deadlock]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[데드락]]></category>
		<category><![CDATA[트랜젝션]]></category>

		<guid isPermaLink="false">http://www.phpkorea.org/archives/294</guid>
		<description><![CDATA[최근에 MySQL에 마이그레이션 작업을 위해 대량의 데이터를 입력하던 중에 갑자기 모든 데이터가 Rollback 되는 현상이 있었습니다. 로그에는 Lock wait timeout 라고 적혀 있었는데요. 간단히 이 메세지에 대해서 알아보겠습니다. 이 Lock wait timeout excceded 메세지는 DBMS가 트랜젝션을 위해 잠금(Lock)한 시간이 제한 시간을 넘었다는 것인데 설정 파일에서 값을 지정하지 않았다면 기본 값은 50초 입니다. 이 에러 메세지가 [...]]]></description>
			<content:encoded><![CDATA[<p>최근에 MySQL에 마이그레이션 작업을 위해 대량의 데이터를 입력하던 중에 갑자기 모든 데이터가 Rollback 되는 현상이 있었습니다. 로그에는 Lock wait timeout 라고 적혀 있었는데요. 간단히 이 메세지에 대해서 알아보겠습니다.</p>
<p>이 Lock wait timeout excceded 메세지는 DBMS가 트랜젝션을 위해 잠금(Lock)한 시간이 제한 시간을 넘었다는 것인데 설정 파일에서 값을 지정하지 않았다면 기본 값은 50초 입니다.</p>
<p>이 에러 메세지가 나타나는 경우는 두 가지가 있을 수 있습니다. 첫 번째는 deadlock 상태가 됐을 경우이고 두 번째는 너무 오랜 시간 lock 이 걸려있는 경우 입니다.</p>
<h3>첫 번째,</h3>
<p>MySQL에서 서로 다른 storage engine 을 사용하는 테이블 끼리 작업을 수행했을 때 deadlock 상태에 빠지기 쉽습니다. 예컨데 동일한 데이터베이스에 각기 다른 storage engine을 사용해 테이블을 구성했다면 MyISAM 엔진을 사용한 테이블은 table lock 이고 InnoDB 엔진을 사용한 테이블은 row lock 이기 때문에 이러한 테이블 간에 deadlock 이 쉽게 발생할 수 있습니다.</p>
<h3>두 번째,</h3>
<p>만약 100개의 데이터를 INSERT 한다면 일반적으로 맨 앞에 BEGIN 을 실행하고 마지막에 COMMIT 을 실행할 것입니다. 그런데 100개의 데이터가 아니라 1,000개, 10,000개의 데이터를 한번의 트랜젝션으로 INSERT 또는 UPDATE를 하려 한다면 기본 제한 시간인 50초를 넘을 수 있기 때문에 에러 메세지를 출력한 후 전부 Rollback 될 것입니다.</p>
<p>해결 방법은 두 가지가 있을 것 같은데요. 첫 번째는 my.ini ( 또는 my.cnf ) 설정 파일을 열고 innodb_lock_wait_timeout 값을 충분하게 늘려 주는 것입니다. 이 방법은 아주 간단하게 문제를 해결 할 수는 있지만 위에서 언급했던 deadlock 같은 상황이 발생하면 큰 문제가 될 수 있으므로 신중하게 고려해야 하는 방법인 것 같습니다. 두 번째 방법은 적당한 수만큼 SQL 쿼리를 나누어 실행하는 것입니다. 예를 들면 1,000개의 INSERT 쿼리라면 100개씩 나누어서 실행하는 것입니다.</p>
<p><a href="http://blog.phpkorea.org/files/20090714-031712.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="2009-07-14_031712" border="0" alt="2009-07-14_031712" src="http://blog.phpkorea.org/files/20090714-031712-thumb.jpg" width="516" height="295" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpk.org/archives/294/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL의 테이블 존재 여부 확인 방법</title>
		<link>http://www.phpk.org/archives/226</link>
		<comments>http://www.phpk.org/archives/226#comments</comments>
		<pubDate>Tue, 12 May 2009 04:53:22 +0000</pubDate>
		<dc:creator>ooti</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[DB]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.phpkorea.org/archives/226</guid>
		<description><![CDATA[동적으로 DB 테이블을 생성해야 하는 경우가 있습니다. 예를 들면 월 단위로 로그 테이블을 생성해서 로그를 기록해야 하는 경우도 있을 테고요. 제로보드 같은 툴에서는 게시판을 생성하면 실제로 테이블을 하나 생성하여 글을 저장합니다. 이렇게 동적으로 DB 테이블을 생성할 때에는 생성하려는 테이블의 이름과 같은 이름의 테이블이 존재하는지 확인하는 과정이 필요합니다. 확인 과정 없이 테이블을 생성하려다가 실패했을 때 예상치 [...]]]></description>
			<content:encoded><![CDATA[<p>동적으로 DB 테이블을 생성해야 하는 경우가 있습니다. 예를 들면 월 단위로 로그 테이블을 생성해서 로그를 기록해야 하는 경우도 있을 테고요. 제로보드 같은 툴에서는 게시판을 생성하면 실제로 테이블을 하나 생성하여 글을 저장합니다.</p>
<p>이렇게 동적으로 DB 테이블을 생성할 때에는 생성하려는 테이블의 이름과 같은 이름의 테이블이 존재하는지 확인하는 과정이 필요합니다. 확인 과정 없이 테이블을 생성하려다가 실패했을 때 예상치 못한 버그가 나타날 수 있습니다.</p>
<p>테이블의 존재 여부를 확인하는 방법으로는 여러 가지 방법이 있겠습니다만 몇 가지 방법을 소개하려 합니다.</p>
<h2>SHOW TABLES</h2>
<p>첫 번째 방법은 한 줄의 SQL 쿼리로 테이블의 존재 여부를 알 수 있습니다. 일치하는 테이블이 있다면 테이블 명을 반환하고 그렇지 않은 경우라면 값이 없을 것입니다.</p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 615px" /></col>
</colgroup>
<tbody>
<tr>
<td style="border-right: black 0.5pt solid; padding-right: 7px; border-top: black 0.5pt solid; padding-left: 7px; border-left: black 0.5pt solid; border-bottom: black 0.5pt solid"><span style="font-size: 10pt">SHOW TABLES FROM [DB명] LIKE &#8216;[TABLE명]&#8216;;</span></td>
</tr>
</tbody>
</table></div>
<p>이미 DB가 지정되어 있다면 아래와 같이 [DB명]을 생략할 수 있습니다.</p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 615px" /></col>
</colgroup>
<tbody>
<tr>
<td style="border-right: black 0.5pt solid; padding-right: 7px; border-top: black 0.5pt solid; padding-left: 7px; border-left: black 0.5pt solid; border-bottom: black 0.5pt solid"><span style="font-size: 10pt">SHOW TABLES LIKE &#8216;[TABLE명]&#8216;;</span></td>
</tr>
</tbody>
</table></div>
<h2>Information_schema</h2>
<p>두 번째 방법은 MySQL의 Information_schema를 사용하는 방법입니다. 주의할 점은 information_schema 는 MySQL 5에서 추가되었기 때문에 MySQL 4 이하에서는 사용할 수 없습니다.</p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 615px" /></col>
</colgroup>
<tbody>
<tr>
<td style="border-right: black 0.5pt solid; padding-right: 7px; border-top: black 0.5pt solid; padding-left: 7px; border-left: black 0.5pt solid; border-bottom: black 0.5pt solid"><span style="font-size: 10pt">SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = &#8216;[DB명]&#8216; AND table_name = &#8216;[TABLE명]&#8216;;</span></td>
</tr>
</tbody>
</table></div>
<p>COUNT( )함수를 사용했기 때문에 테이블이 존재하는 경우 1 , 존재하지 않는 경우 0 으로 결과값이 정확하게 나옵니다. 추가로 다음 코드처럼 Information_schema DB 를 사용하면 테이블의 상세 정보를 알 수도 있습니다.</p>
<div>
<table style="border-collapse: collapse" border="0">
<colgroup>
<col style="width: 615px" /></col>
</colgroup>
<tbody>
<tr>
<td style="border-right: black 0.5pt solid; padding-right: 7px; border-top: black 0.5pt solid; padding-left: 7px; border-left: black 0.5pt solid; border-bottom: black 0.5pt solid"><span style="font-size: 10pt">SELECT * FROM information_schema.tables WHERE table_schema = &#8216;[DB명]&#8216; AND table_name = &#8216;[TABLE명]&#8216;;</span></td>
</tr>
</tbody>
</table></div>
<p>SHOW TABLES는 테이블 명만 반환하는데 반해서 information_schema DB를 이용하면 테이블에 대한 상세한 정보까지 알 수 있다는 장점이 있습니다.</p>
<p>참고 : <a href="http://dev.mysql.com/doc/refman/5.0/en/information-schema.html">http://dev.mysql.com/doc/refman/5.0/en/information-schema.html</a></p>
<h2>CREATE TABLE IF NOT EXISTS</h2>
<p>이 방법은 테이블이 없는 경우에 테이블을 생성하게 합니다. 하지만 조금 주의해야 할 점은 혹시나 테이블 이름은 동일하지만 항목이 다른 경우라면 오류가 발생할 수 있습니다. 예를 들면 아래 두 개의 SQL 과 같은 경우 입니다.</p>
<p style="text-align: justify"><span style="font-size: 10pt"><strong>코드 1 members 1</strong></span></p>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<pre id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">TABLE</span> members ( id <span style="color: #0000ff">int</span> , name <span style="color: #0000ff">varchar</span>(10) ) </pre>
</div>
<p style="text-align: justify"><span style="font-size: 10pt"><strong>코드 2 members 2</strong></span></p>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<pre id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span style="color: #0000ff">CREATE</span> <span style="color: #0000ff">TABLE</span> <span style="color: #0000ff">IF</span> <span style="color: #0000ff">NOT</span> <span style="color: #0000ff">EXISTS</span> members ( id <span style="color: #0000ff">int</span> , email <span style="color: #0000ff">varchar</span>(45) )</pre>
</div>
<p>이미 코드 1에 해당되는 테이블이 존재 한다고 했을 때, 그 후 코드 2의 테이블을 생성하려 했으나 IF NOT EXISTS 옵션으로 인해 생성하지 않았다면 항목이 전혀 다르기 때문에 문제가 될 수 있으므로 주의해야 합니다. 이런 경우가 발생할 가능성이 있다면 첫 번째나 두 번째 방법을 이용해서 테이블의 존재 여부를 미리 파악해서 예외처리를 하는 것이 좋을 것 같습니다.</p>
<p>추가로 아래는 information_schema DB를 이용해서 테이블을 확인하는 PHP 함수코드 입니다.</p>
<p style="text-align: justify"><span style="font-size: 10pt"><strong>코드 3 테이블 존재 여부 확인 PHP 함수</strong></span></p>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">function</span> table_exists($tablename, $database = <span style="color: #0000ff">false</span>) {</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span>     <span style="color: #0000ff">if</span>(!$database) {</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum3" style="color: #606060">   3:</span>        $res = mysql_query(<span style="color: #006080">&quot;SELECT DATABASE()&quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum4" style="color: #606060">   4:</span>        $database = mysql_result($res, 0);</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum5" style="color: #606060">   5:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum6" style="color: #606060">   6:</span>     $res = mysql_query(<span style="color: #006080">&quot;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum7" style="color: #606060">   7:</span>         SELECT COUNT(*) AS count</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum8" style="color: #606060">   8:</span>         FROM information_schema.tables</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum9" style="color: #606060">   9:</span>         WHERE table_schema = '$database'</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum10" style="color: #606060">  10:</span>         AND table_name = '$tablename'</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum11" style="color: #606060">  11:</span>     &quot;</span>);</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum12" style="color: #606060">  12:</span>     <span style="color: #0000ff">return</span> mysql_result($res, 0) == 1;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum13" style="color: #606060">  13:</span> }</pre>
<p><!--CRLF--></p>
</p></div>
</div>
<p>코드 출처 : <a href="http://www.electrictoolbox.com/check-if-mysql-table-exists/php-function/">http://www.electrictoolbox.com/check-if-mysql-table-exists/php-function/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpk.org/archives/226/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  www.phpk.org/archives/category/articles/db/feed ) in 0.17142 seconds, on Feb 8th, 2012 at 8:35 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 8th, 2012 at 9:35 am UTC -->
