<?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>OderWat? &#187; MySQL</title>
	<atom:link href="http://oderwat.de/tags/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://oderwat.de</link>
	<description>nützliches und persönliches...</description>
	<lastBuildDate>Sun, 22 May 2011 14:58:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>WassUp mit WassUp (Error im Apache Log)?</title>
		<link>http://oderwat.de/2008/09/29/wassup-mit-wassup-error-im-apache-log/</link>
		<comments>http://oderwat.de/2008/09/29/wassup-mit-wassup-error-im-apache-log/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 21:20:42 +0000</pubDate>
		<dc:creator>oderwat</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WassUp]]></category>

		<guid isPermaLink="false">http://oderwat.de/?p=181</guid>
		<description><![CDATA[Nun hatte ich mal ein bisschen Zeit mich so richtig über die Apache Fehler die WassUp (Version 1.6.2) bei mir erzeugt zu wundern. Nachdem ich das Problem gefunden hab kann ich nun die Grafik genießen, welche bei korrekter Funktion wohl von Anfang an dabei gewesen wären&#8230; Die Fehlermeldung im Apache Log war: WordPress-Datenbankfehler You have [...]]]></description>
			<content:encoded><![CDATA[<p>Nun hatte ich mal ein bisschen Zeit mich so richtig über die Apache Fehler die WassUp (Version 1.6.2) bei mir erzeugt zu wundern. Nachdem ich das Problem gefunden hab kann ich nun die Grafik genießen, welche bei korrekter Funktion wohl von Anfang an dabei gewesen wären&#8230;</p>
<p>Die Fehlermeldung im Apache Log war:</p>
<blockquote><p>WordPress-Datenbankfehler You have an error in your SQL syntax! Check the manual that corresponds to your MySQL server version for the right syntax to use near &#8216;-7200) AS UNSIGNED)), &#8216;%H:00&#8242;) as thedate FROM wp_wassup WHERE &#8230;</p></blockquote>
<p>Nachdem ich etwas rumgeschaut hatte, war der böse Code schnell gefunden:</p>
<p>In der Datei &#8220;lib/main.php&#8221; in Zeile 996 (die übrigens 447 Zeichen lang ist) finden wir 2 mal</p>
<p><code>FROM_UNIXTIME(<span style="color: #0000ff;">CAST((timestamp-$UTCoffset) AS UNSIGNED)</span>)</code></p>
<p>Das ändern wir nun schnell mal um in:</p>
<p><code>FROM_UNIXTIME(<span style="color: #0000ff;">CAST((<strong><span style="color: #ff0000;">`</span></strong>timestamp<strong><span style="color: #ff0000;">`</span></strong>-$UTCoffset) AS UNSIGNED)</span>)</code></p>
<p>und siehe da&#8230; nun klappts auch mit der Grafik&#8230; und der Apache bekommt keinen Schluckauf mehr&#8230;</p>
<p>Ich vermute das Problem existiert nur mit bestimmten MySQL Versionen (4.0.x?) und das es eigentlich auch reichen müsste das ganze völlig ohne den &#8220;cast()&#8221; zu schreiben. Denn &#8220;timestamp&#8221; ist auch ein Keyword&#8230; Ich hätte den Namen für ein Feld einfach vermieden&#8230; Aber ich mache ja auch keine 447 Zeichen lange Zeilen in meinen Code&#8230; <img src='http://oderwat.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Ansonsten gefällt mir das Plugin ganz gut&#8230; aber wenn ich mal wieder Langeweile hab schau ich obs nicht noch was anderes gibt&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://oderwat.de/2008/09/29/wassup-mit-wassup-error-im-apache-log/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL 4.0, Timestamp(19) und Indizes&#8230;</title>
		<link>http://oderwat.de/2008/09/25/mysql-40-timestamp19-und-indizes/</link>
		<comments>http://oderwat.de/2008/09/25/mysql-40-timestamp19-und-indizes/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 15:45:57 +0000</pubDate>
		<dc:creator>oderwat</dc:creator>
				<category><![CDATA[Job]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://oderwat.de/2008/09/25/mysql-40-timestamp19-und-indizes/</guid>
		<description><![CDATA[Heute bin ich über etwas gestolpert, was mir einige Probleme bereitet&#8230; Im Zuge einer zukünftigen Anpassung einiger Software, hatte ich vor einiger Zeit verschiedene MySQL Tabellen so umgebaut, dass in der 4.0 Version die Timestamp Felder mit 19 Zeichen Länge hinterlegt sind (ohne &#8220;set new = 1&#8243;). Das funktionierte auch Klasse&#8230; Anstelle von &#8220;20080901121504&#8243; bekommt [...]]]></description>
			<content:encoded><![CDATA[<p>Heute bin ich über etwas gestolpert, was mir einige Probleme bereitet&#8230; Im Zuge einer zukünftigen Anpassung einiger Software, hatte ich vor einiger Zeit verschiedene MySQL Tabellen so umgebaut, dass in der 4.0 Version die Timestamp Felder mit 19 Zeichen Länge hinterlegt sind (ohne &#8220;set new = 1&#8243;).</p>
<p>Das funktionierte auch Klasse&#8230; Anstelle von &#8220;20080901121504&#8243; bekommt man dann ein schönes &#8220;2008-09-01 12:15:04&#8243; im SELECT angezeigt und wird dies unter MySQL 5 eben auch so bekommen. Damit muss man nicht für beide &#8220;Fälle&#8221; programmieren.</p>
<p>Damit konnte ich recht elegant meine Software auf die 19 Zeichen vorbereiten und die Kompatibilität der Timestamp betreffenden Programmbereiche für eine später Umstellung auf MySQL 5 sicherstellen!</p>
<p>Heute fand ich nach langem testen ein Problem, welches dieses ganze schöne Vorgehen völlig absurdum fährt:</p>
<p>MySQL 4.0 benutzt eine &#8220;TIMESTAMP&#8221; deren Feldlänge mit 19 angegeben ist nie als INDEX in einem Query!</p>
<p>Ich konnte es kaum glauben.. aber es ist nach mehrmaligem Testen eindeutig so!</p>
<p><strong>Einfache Demonstration:</strong></p>
<blockquote><p>CREATE TABLE `test` (<br />
`id` int(11) NOT NULL auto_increment,<br />
`ts1` timestamp(14) NOT NULL,<br />
`ts2` timestamp(19) NOT NULL default &#8217;0000-00-00 00:00:00&#8242;,<br />
PRIMARY KEYÂ  (`id`),<br />
KEY `ts1` (`ts1`),<br />
KEY `ts2` (`ts2`)<br />
) TYPE=MyISAM;</p>
<p>INSERT INTO test (id,ts1,ts2) VALUES (NULL , &#8217;20080101120000&#8242;, &#8217;20080101120000&#8242;);</p>
<p>INSERT INTO test (id,ts1,ts2) VALUES (NULL , &#8217;20080901120000&#8242;, &#8217;20080901120000&#8242;);</p></blockquote>
<p>Nun wird bei</p>
<blockquote><p>EXPLAIN SELECT * FROM test WHERE ts1=&#8217;2008-01-01 12:00:00&#8242;</p></blockquote>
<p>der Key &#8220;ts1&#8243; benutzt&#8230;</p>
<p>bei&#8230;</p>
<blockquote><p>EXPLAIN SELECT * FROM test WHERE ts2=&#8217;2008-01-01 12:00:00&#8242;</p></blockquote>
<p>wird der Key &#8220;ts2&#8243; <span style="text-decoration: underline;">nicht</span> benutzt!</p>
<p>Wer Lust hat kann aus Key 1 mal einen timestamp(19) machen .. dann wird ts1 auch nicht mehr benutzt.</p>
<p>Das heißt&#8230; durch die Umstellung der TIMESTAMP&#8217;s auf timestamp(19) wurden diese in Queries welche eine TIMESTAMP im INDEX als Feld haben plötzlich gar nicht mehr verwendet. So etwas fällt auch unter Umständen nicht sofort auf, gerade wenn man solche mit mehreren Feldern verwendet.</p>
<p>Mag sein, dass dies einigen als &#8220;völlig Logisch&#8221; bekannt ist&#8230; für mich war es eine Erkenntnis die mich erstaunt hat. Ich hatte doch tatsächlich gedacht, dass das Darstellungsformat hier keine Auswirkung hat&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://oderwat.de/2008/09/25/mysql-40-timestamp19-und-indizes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

