<?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>Two Drifters &#187; MySQL</title>
	<atom:link href="http://blog.ideaday.de/max/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ideaday.de/max</link>
	<description>Off to see the world.</description>
	<lastBuildDate>Sun, 05 Feb 2012 16:48:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Concrete 5 SQL errors during installation</title>
		<link>http://blog.ideaday.de/max/2012/02/concrete-5-sql-errors-during-installation/</link>
		<comments>http://blog.ideaday.de/max/2012/02/concrete-5-sql-errors-during-installation/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 19:57:24 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Concrete 5]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[C5]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[explanation]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysql error]]></category>
		<category><![CDATA[setup]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://blog.ideaday.de/max/?p=1667</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blog.ideaday.de/max/2012/02/concrete-5-sql-errors-during-installation/' addthis:title='Concrete 5 SQL errors during installation '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>We have seen this error with Concrete 5.5.1 You try to setup Concrete 5, and get strange SQL errors during the installation: If installing with an empty site, like this you get: mysql error: [1048: Column 'uID' cannot be null] in EXECUTE("INSERT INTO Config (cfKey,cfValue,uID) VALUES ('NEWSFLOW_LAST_VIEWED','FIRSTRUN',NULL)") If installing with Sample content with Blog: The [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://blog.ideaday.de/max/2012/02/concrete-5-sql-errors-during-installation/' addthis:title='Concrete 5 SQL errors during installation ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blog.ideaday.de/max/2012/02/concrete-5-sql-errors-during-installation/' addthis:title='Concrete 5 SQL errors during installation '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div><p>We have seen this error with <strong>Concrete 5.5.1</strong></p>
<p>You try to setup Concrete 5, and get <strong>strange SQL errors</strong> during the installation:</p>
<p>If installing with an <strong>empty site</strong>, like this</p>
<p align="center"><a href="http://ideadayblog.ideaday.netdna-cdn.com/max/wp-content/uploads/2012/02/c5-nosample-content-chosen.png"><img hspace="10" alt="c5-nosample-content-chosen" vspace="10" src="http://ideadayblog.ideaday.netdna-cdn.com/max/wp-content/uploads/2012/02/c5-nosample-content-chosen-small.png" width="450" height="208" /></a></p>
<p>you get:</p>
<p align="center"><a href="http://ideadayblog.ideaday.netdna-cdn.com/max/wp-content/uploads/2012/02/c5-mysql-error.png"><img hspace="10" alt="c5-mysql-error" vspace="10" src="http://ideadayblog.ideaday.netdna-cdn.com/max/wp-content/uploads/2012/02/c5-mysql-error-small.png" width="450" height="129" /></a></p>
<p><em>mysql error: [1048: Column 'uID' cannot be null] in EXECUTE("INSERT INTO Config (cfKey,cfValue,uID) VALUES ('NEWSFLOW_LAST_VIEWED','FIRSTRUN',NULL)")</em></p>
<p>If installing with <strong>Sample content with Blog</strong>:</p>
<p align="center"><a href="http://ideadayblog.ideaday.netdna-cdn.com/max/wp-content/uploads/2012/02/c5_with_sample_content.png"><img hspace="10" alt="c5 with sample content" vspace="10" src="http://ideadayblog.ideaday.netdna-cdn.com/max/wp-content/uploads/2012/02/c5_with_sample_content-small.png" width="450" height="276" /></a></p>
<p>The error you get is:</p>
<p><em>Catchable fatal error: Argument 1 passed to ContentImporter::importPageAreas() must be an instance of Page, boolean given, called in /concrete/libraries/content/importer.php on line 75 and defined in /concrete/libraries/content/importer.php on line 197.</em></p>
<p>&nbsp;</p>
<p><strong>Solution:</strong></p>
<p>You don't run Varnish by any chance, do you? We do, and we had it set up to &#8230; dispose of some cookies. The solution is, in Varnish' case, to enable pass-through for the host you are installing on.</p>
<p>You want to enable cookies.</p>
<p>&nbsp;</p>
<p><strong>Explanation:</strong></p>
<p>The code which breaks is located in <em>concrete5.5.1\concrete\models\package\starting_point.php</em></p>
<blockquote>
<p>  Config::save('SITE', SITE);<br />
  Config::save('SITE_APP_VERSION', APP_VERSION);<br />
  $u = new User();<br />
  $u-&gt;saveConfig('NEWSFLOW_LAST_VIEWED', 'FIRSTRUN');</p>
</blockquote>
<p>As you see, this is the first time a User is created and used.</p>
<p>The User class is defined in <em>concrete5.5.1\concrete\models\user.php</em></p>
<blockquote>
<p> <strong> if (isset($_SESSION['uID'])) {<br /></strong>     $this-&gt;uID = $_SESSION['uID'];<br />
     $this-&gt;uName = $_SESSION['uName'];<br />
     $this-&gt;uTimezone = $_SESSION['uTimezone'];<br />
     if (isset($_SESSION['uDefaultLanguage'])) {<br />
      $this-&gt;uDefaultLanguage = $_SESSION['uDefaultLanguage'];<br />
     }<br />
     $this-&gt;superUser = ($_SESSION['uID'] == USER_SUPER_ID) ? true : false;<br />
    } else {<br />
    <strong> $this-&gt;uID = null;<br /></strong>     $this-&gt;uName = null;<br />
     $this-&gt;superUser = false;<br />
     $this-&gt;uDefaultLanguage = null;<br />
     $this-&gt;uTimezone = null;<br />
    }<br />
    $this-&gt;uGroups = $this-&gt;_getUserGroups();<br />
    if (!isset($args[2])) {<br />
     $_SESSION['uGroups'] = $this-&gt;uGroups;<br />
    }<br />
   }</p>
</blockquote>
<p>The constructor checks in the Session for a valid user ID. If no user ID is found, it is set to zero. This happens <strong>if you throw away the cookies</strong>! Because the session is stored in them.</p>
<p>HTH. Feel free to comment on similar errors and solutions.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://blog.ideaday.de/max/2012/02/concrete-5-sql-errors-during-installation/' addthis:title='Concrete 5 SQL errors during installation ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.ideaday.de/max/2012/02/concrete-5-sql-errors-during-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concrete5 :: interacting with the database</title>
		<link>http://blog.ideaday.de/max/2010/03/concrete5-interacting-with-the-database/</link>
		<comments>http://blog.ideaday.de/max/2010/03/concrete5-interacting-with-the-database/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 09:02:29 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Concrete 5]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Concrete5]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.ideaday.de/max/2010/03/concrete5-interacting-with-the-database/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blog.ideaday.de/max/2010/03/concrete5-interacting-with-the-database/' addthis:title='Concrete5 :: interacting with the database '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>The C5 API has a class Database in the core package (libraries/database.php). Alas, this is not the documentation we're looking for (we're looking for query, etc. methods, which are not present there). Actually the methods used come directly from the included ADODB librarary. You can download a documentation here. Usage: //Load the Database Layer. $db [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://blog.ideaday.de/max/2010/03/concrete5-interacting-with-the-database/' addthis:title='Concrete5 :: interacting with the database ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blog.ideaday.de/max/2010/03/concrete5-interacting-with-the-database/' addthis:title='Concrete5 :: interacting with the database '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div><p>The C5 <a title="C5 API" href="http://concrete5.org/api/" target="_blank">API</a> has a class <strong>Database</strong> in the <strong>core</strong> package (<em>libraries/database.php</em>). Alas, this is not the documentation we're looking for (we're looking for query, etc. methods, which are not present there).</p>
<p>Actually the methods used come directly from the included ADODB librarary. You can download a documentation <a title="Documentation for AdoDB which Concrete5 runs on" href="http://adodb.sourceforge.net/#docs" target="_blank">here</a>.</p>
<p><strong>Usage:</strong></p>
<blockquote>
<p>//Load the Database Layer.<br />
$db = Loader::db();<br />
//quote the string we'll be inserting (use get_magic_quotes_gpc() as second parameter to avoid double escaping!)<br />
$source = $db-&gt;qstr($source, get_magic_quotes_gpc());<br />
$content = $db-&gt;qstr($content);<br />
$sql = "insert into IdImportWizardSources (source, content) ";<br />
$sql .= "values ($source,$content)";<br />
if ($db-&gt;Execute($sql)===false) {<br />
//error handling<br />
echo 'error inserting: ' .$db-&gt;ErrorMsg();<br />
}</p>
</blockquote>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://blog.ideaday.de/max/2010/03/concrete5-interacting-with-the-database/' addthis:title='Concrete5 :: interacting with the database ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.ideaday.de/max/2010/03/concrete5-interacting-with-the-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concrete5 and db.xml</title>
		<link>http://blog.ideaday.de/max/2010/03/concrete5-and-db-xml/</link>
		<comments>http://blog.ideaday.de/max/2010/03/concrete5-and-db-xml/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 14:10:15 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[Concrete 5]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Aha-Erlebnis]]></category>
		<category><![CDATA[Concrete5]]></category>
		<category><![CDATA[explanation]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.ideaday.de/max/2010/03/concrete5-and-db-xml/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blog.ideaday.de/max/2010/03/concrete5-and-db-xml/' addthis:title='Concrete5 and db.xml '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>How does the installation of a db.xml file in the package root directory work? I need to create tables for my Dashboard Application (Import Wizard), which will not be used by blocks &#8211; the Import Wizard does not contain any blocks. In the Concrete5 forum, a function installDB was mentioned. It's defined in the InstallController [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://blog.ideaday.de/max/2010/03/concrete5-and-db-xml/' addthis:title='Concrete5 and db.xml ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blog.ideaday.de/max/2010/03/concrete5-and-db-xml/' addthis:title='Concrete5 and db.xml '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div><p>How does the installation of a db.xml file in the package root directory work?</p>
<p>I need to create tables for my Dashboard Application (Import Wizard), which will not be used by blocks &#8211; the Import Wizard does not contain any blocks.</p>
<p>In the Concrete5 forum, a function installDB was mentioned. It's defined in the InstallController class like this:</p>
<blockquote>
<p> protected function installDB() { </p>
<p>  $installDirectory = $this-&gt;installData['DIR_BASE_CORE'] . '/config';<br />
  $file = $installDirectory . '/db.xml';<br />
  if (!file_exists($file)) {<br />
   throw new Exception(t('Unable to locate database import file.'));<br />
  }</p>
<p>  <strong>$db = Loader::db();</strong><br />
  $db-&gt;ensureEncoding();<br />
  <strong>$err = Package::installDB($file);</strong>  </p>
<p> }</p>
</blockquote>
<p>It ensures the db.xml file exists and after some other setup steps and check finally calls <strong>Package::installDB</strong> (Package is a model):</p>
<blockquote>
<p> public static function installDB($xmlFile) {</p>
<p>  if (!file_exists($xmlFile)) {<br />
   return false;<br />
  }</p>
<p>  // currently this is just done from xml</p>
<p>  $db = Loader::db();</p>
<p>  // this sucks &#8211; but adodb generates errors at the beginning because it attempts<br />
  // to find a table that doesn't exist!</p>
<p>  $handler = $db-&gt;IgnoreErrors();<br />
  if ($db-&gt;getDebug() == false) {<br />
   ob_start();<br />
  }</p>
<p>  $schema = $db-&gt;getADOSChema();  <br />
  $sql = $schema-&gt;ParseSchema($xmlFile);</p>
<p>  $db-&gt;IgnoreErrors($handler);</p>
<p>  if (!$sql) {<br />
   $result-&gt;message = $db-&gt;ErrorMsg();<br />
   return $result;<br />
  }</p>
<p>  $r = $schema-&gt;ExecuteSchema();</p>
<p>
  if ($db-&gt;getDebug() == false) {<br />
   $dbLayerErrorMessage = ob_get_contents();<br />
   ob_end_clean();<br />
  }</p>
<p>  $result = new stdClass;<br />
  $result-&gt;result = false;</p>
<p>  if ($dbLayerErrorMessage != ") {<br />
   $result-&gt;message = $dbLayerErrorMessage;<br />
   return $result;<br />
  } if (!$r) {<br />
   $result-&gt;message = $db-&gt;ErrorMsg();<br />
   return $result;<br />
  }</p>
<p>  $result-&gt;result = true;</p>
<p>  $db-&gt;CacheFlush();<br />
  return $result;</p>
<p> }</p>
</blockquote>
<p>The Code is <a title="Concrete5 team" href="http://www.concrete5.org/" target="_blank">Copyright by Concrete5 Team</a>.</p>
<p>It looks like I could just drop a db.xml file in my package directory and it will be installed. But how should I name my table?</p>
<p>By convention, there's different prefixes:</p>
<ul>
<li>
<div>atX (atAddress, atBoolean, atDateTime) = attribute types</div>
</li>
<li>
<div>btX (btForm, btFlashContent, btSearch) = block types</div>
</li>
</ul>
<p>But there's none for helper tables, to be used just for the Dashboard wizard.</p>
<p>Here's a link to the <a href="http://www.sahana.lk/wiki/doku.php/dev:dbschema_convention" target="_blank">AdoDB XML Schemas </a>  (AXMLS) (the language db.xml is written in). I came up with the following:</p>
<blockquote>
<p>&lt;?xml version="1.0"?&gt;<br />
&lt;schema version="0.3"&gt;<br />
 &lt;table name="IdImportWizardSources"&gt;<br />
  &lt;field name="ID" type="I"&gt;<br />
   &lt;key /&gt;<br />
   &lt;unsigned /&gt;<br />
   &lt;autoincrement /&gt;<br />
  &lt;/field&gt;<br />
  &lt;field name="source" type="X" /&gt;<br />
  &lt;field name="retrieved" type="T"&gt;<br />
   &lt;deftimestamp /&gt;<br />
  &lt;/field&gt;<br />
  &lt;field name="content" type="B" /&gt;</p>
<p> &lt;/table&gt;<br />
&lt;/schema&gt;</p>
</blockquote>
<p>Here I define a new table named <em>IdImportWizardSources</em> (Id for <a title="IdeaDay - tailors to your communication and interactive development needs." href="http://www.ideaday.de/" target="_blank">IdeaDay</a>), and several field values using keywords.</p>
<p>Notable is the <em>retrieved</em> field which is automatically set to the current timestamp (<em>deftimestamp</em>). <em>content</em> has a type of BLOB which should be able to store up to 4 GB with MySQL longblob type &#8211; unfortunately the amount you can store at once also depends on your MySQL max_packet_size. (Which is usually set to around 16 MB).</p>
<p>The table is imported and set up automatically by Concrete, without a single line o'code.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://blog.ideaday.de/max/2010/03/concrete5-and-db-xml/' addthis:title='Concrete5 and db.xml ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.ideaday.de/max/2010/03/concrete5-and-db-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server Management Software</title>
		<link>http://blog.ideaday.de/max/2010/03/server-management-software/</link>
		<comments>http://blog.ideaday.de/max/2010/03/server-management-software/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 16:41:00 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[German]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Server Control Panel]]></category>

		<guid isPermaLink="false">http://blog.ideaday.de/max/2010/03/server-management-software/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blog.ideaday.de/max/2010/03/server-management-software/' addthis:title='Server Management Software '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>Wir sind dazu bereit, den nächsten Schritt zu gehen und die Verwaltung des Webservers von manuell auf semi-manuell umzustellen. Unser Mailsystem wird nach wie vor vom Websystem abgekoppelt laufen &#8211; auf Zimbra-Basis. Für den Webserver selber rüsten wir eine Server Management Software nach. Sie muß einen typischen LAMP Server unterstützen (Linux &#8211; Debian / Apache [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://blog.ideaday.de/max/2010/03/server-management-software/' addthis:title='Server Management Software ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blog.ideaday.de/max/2010/03/server-management-software/' addthis:title='Server Management Software '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div><p>Wir sind dazu bereit, den nächsten Schritt zu gehen und die Verwaltung des Webservers von manuell auf semi-manuell umzustellen.</p>
<p>Unser Mailsystem wird nach wie vor vom Websystem abgekoppelt laufen &#8211; auf Zimbra-Basis.</p>
<p>Für den Webserver selber rüsten wir eine Server Management Software nach. Sie muß einen typischen LAMP Server unterstützen (Linux &#8211; Debian / Apache / MySQL / PHP)</p>
<p><strong>Hier sind die Kandidaten:</strong></p>
<ol>
<li>
<div><a title="SysCP Server Management" href="http://www.syscp.org/" target="_blank">SysCP</a></p>
<p>Gut dokumentiert, aktive Community, interessanter Funktionsumfang (inklusive Resellern die ihre Kunden selbst administrieren können usw.), deutsches User Interface verfügbar.</p>
<p>Natürlich Open Source.</p>
</div>
</li>
<li>
<div><a href="http://en.wikipedia.org/wiki/Lxadmin" target="_blank">Kloxo / HyperVM</a></p>
<p>Interessant für unser Setup (OpenVZ, mehrere VPMs, &#8230;); allerdings evtl. nur auf englisch und massiver Overkill. Es heißt, dass es als Open Source released wurde, jedoch ist auf der Firmenseite etwas von Lizenzkosten die Rede &#8230;</p>
</div>
</li>
<li>
<div><a href="http://www.virtualmin.com/">http://www.virtualmin.com/</a></p>
<p>Virtualmin ist eine weitere Möglichkeit. Hier sticht ebenfalls keine Sprachunterstützung heraus, das System ist komplex und deckt z.B. detaillierte CPU Leistung usw. Statistiken ab.</p>
<p>Unterstützt einen hohen Grad von Sicherheit bei PHP &#8211; die Prozesse werden unter dem jeweiligen User ausgeführt, mit suexec und mod_fastcgi. Siehe auch: <a href="http://en.wikipedia.org/wiki/Webmin">http://en.wikipedia.org/wiki/Webmin</a></p>
</div>
</li>
<li>
<div><a href="http://openlsm.sourceforge.net/demo.php" target="_blank">OpenLSM</a></p>
<p>Eine indische Software mit einer schönen, aber leider nicht so informativen Webseite. In der Feauture Liste schaut das Produkt gut aus &#8211; Anlegen von Resellern, Monitoring, &#8230; Unterstützt auch Subversion.</p>
</div>
</li>
<li>
<div><a href="http://www.vhcs.net/index.html" target="_blank">VHCS</a></p>
<p>Obwohl auf anderen Seiten behauptet wird, dass das Projekt tot sei, ist es nicht so. Die Jungs arbeiten gerade an Release 2.6, der Web 2.0 in VHCS bringen soll. Das Interface schaut übersichtlich und aufgeräumt aus.</p>
</div>
</li>
<li>
<div><a href="http://www.openpanel.com/" target="_blank">OpenPanel</a></p>
<p>Schaut sehr, sehr gut aus &#8211; ein JavaScript zentriertes UserInterface. Leider ist es seit Juli 2008 in Beta 0.9.5 stehen geblieben. Eine 1.0 steht fast vor der Tür &#8211; sie wird Debian 5.0 unterstützen. Definitiv einen Blick wert &#8211; auch wenn es erstmal nur in Englisch ist.<br />
Wird von  <a href="http://www.panelsix.com/" target="_blank">PanelSix</a> entwickelt, hier ist die <a href="http://documentation.openpanel.com/index.php/Main_Page" target="_blank">Doku</a>.</p>
</div>
</li>
</ol>
<p>Hier ist noch ein <a href="http://en.wikipedia.org/wiki/Comparison_of_web_hosting_control_panels" target="_blank">Überblick</a> auf Wikipedia (EN).</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://blog.ideaday.de/max/2010/03/server-management-software/' addthis:title='Server Management Software ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.ideaday.de/max/2010/03/server-management-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL</title>
		<link>http://blog.ideaday.de/max/2010/02/mysql/</link>
		<comments>http://blog.ideaday.de/max/2010/02/mysql/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 15:22:13 +0000</pubDate>
		<dc:creator>Max</dc:creator>
				<category><![CDATA[German]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[Fehler]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP error]]></category>

		<guid isPermaLink="false">http://blog.ideaday.de/max/2010/02/mysql/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blog.ideaday.de/max/2010/02/mysql/' addthis:title='MySQL '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>[25-Feb-2010 16:15:46] PHP Warning: mysql_real_escape_string() [&#60;a href='function.mysql-real-escape-string'&#62;function.mysql-real-escape-string&#60;/a&#62;]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in &#8230; on line 38 [25-Feb-2010 16:15:46] PHP Warning: mysql_real_escape_string() [&#60;a href='function.mysql-real-escape-string'&#62;function.mysql-real-escape-string&#60;/a&#62;]: A link to the server could not be established in &#8230; on line 38 (&#8230;) Lösung des Problems: die Funktion mysql-real-escape-string erfordert eigentlich zwei Parameter: zuerst [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://blog.ideaday.de/max/2010/02/mysql/' addthis:title='MySQL ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://blog.ideaday.de/max/2010/02/mysql/' addthis:title='MySQL '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div><blockquote>
<p>[25-Feb-2010 16:15:46] PHP Warning: mysql_real_escape_string() [&lt;a href='function.mysql-real-escape-string'&gt;function.mysql-real-escape-string&lt;/a&gt;]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in &#8230; on line 38<br />
[25-Feb-2010 16:15:46] PHP Warning: mysql_real_escape_string() [&lt;a href='function.mysql-real-escape-string'&gt;function.mysql-real-escape-string&lt;/a&gt;]: A link to the server could not be established in &#8230; on line 38<br />
(&#8230;)</p>
</blockquote>
<p><strong>Lösung des Problems:<br /></strong> die Funktion mysql-real-escape-string erfordert eigentlich zwei Parameter: zuerst den $unescaped_string, dann die resource $link_identifier. Lässt man zweiteres weg, versucht MySQL die aktuell zuletzt geöffnete Verbindung zu benutzen.</p>
<p>Ich habe in meinem Skript den Zugang zur Datenbank erst danach geöffnet. (Das ist der wichtigste Unterschied zwischen mysql_escape_string und mysql_real_escape_string &#8211; ersteres erfordert KEINEN Zugriff auf die Datenbank!)</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://blog.ideaday.de/max/2010/02/mysql/' addthis:title='MySQL ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://blog.ideaday.de/max/2010/02/mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/24 queries in 0.012 seconds using disk: basic
Object Caching 702/752 objects using disk: basic
Content Delivery Network via ideadayblog.ideaday.netdna-cdn.com

Served from: blog.ideaday.de @ 2012-02-06 18:27:22 -->
