<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Apparent vs. actual data integrity</title>
	<atom:link href="http://www.pythian.com/news/1463/apparent-vs-actual-data-integrity/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pythian.com/news/1463/apparent-vs-actual-data-integrity/</link>
	<description>News and views from Pythian DBAs</description>
	<lastBuildDate>Fri, 10 Feb 2012 13:01:25 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
	<item>
		<title>By: Log Buffer #133: A Carnival of the Vanities for DBAs</title>
		<link>http://www.pythian.com/news/1463/apparent-vs-actual-data-integrity/#comment-334905</link>
		<dc:creator>Log Buffer #133: A Carnival of the Vanities for DBAs</dc:creator>
		<pubDate>Fri, 30 Jan 2009 17:08:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.pythian.com/blogs/1463/apparent-vs-actual-data-integrity#comment-334905</guid>
		<description>[...] colleague Sheeri wrote a great blog post on MySQL&#8217;s default silent truncation behavior and how this can affect your database server&#8217;s data [...]</description>
		<content:encoded><![CDATA[<p>[...] colleague Sheeri wrote a great blog post on MySQL&#8217;s default silent truncation behavior and how this can affect your database server&#8217;s data [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kristian Nielsen</title>
		<link>http://www.pythian.com/news/1463/apparent-vs-actual-data-integrity/#comment-333464</link>
		<dc:creator>Kristian Nielsen</dc:creator>
		<pubDate>Mon, 26 Jan 2009 08:18:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.pythian.com/blogs/1463/apparent-vs-actual-data-integrity#comment-333464</guid>
		<description>As I understand it, the underlying reason for the silent truncation, and for most of the other ignore-error behaviour, is due to the support for non-transactional storage engines, especially MyISAM which was the first engine and still the default on non-Windows installs I believe.

Since MyISAM cannot roll back a partial change, the issue is what to do when a problem is detected half-way through a multi-row update or insert. Truncating the value (or other error-ignoring action) allows the statement to complete, but leaves possibly wrong data in one row. Aborting would leave half an update in the database, which can also cause serious inconsistencies. Either way we loose.

With InnoDB there is no such problems, as we can rollback just the offending statement on detecting an error. Personally I would install MySQL with InnoDB and strict-mode defauls.

However even an engine like NDB (which is transactional) does not fully support this, as it cannot roll back the last statement (only the whole transaction), which leads to some of the same problems.</description>
		<content:encoded><![CDATA[<p>As I understand it, the underlying reason for the silent truncation, and for most of the other ignore-error behaviour, is due to the support for non-transactional storage engines, especially MyISAM which was the first engine and still the default on non-Windows installs I believe.</p>
<p>Since MyISAM cannot roll back a partial change, the issue is what to do when a problem is detected half-way through a multi-row update or insert. Truncating the value (or other error-ignoring action) allows the statement to complete, but leaves possibly wrong data in one row. Aborting would leave half an update in the database, which can also cause serious inconsistencies. Either way we loose.</p>
<p>With InnoDB there is no such problems, as we can rollback just the offending statement on detecting an error. Personally I would install MySQL with InnoDB and strict-mode defauls.</p>
<p>However even an engine like NDB (which is transactional) does not fully support this, as it cannot roll back the last statement (only the whole transaction), which leads to some of the same problems.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Hodges</title>
		<link>http://www.pythian.com/news/1463/apparent-vs-actual-data-integrity/#comment-333450</link>
		<dc:creator>Robert Hodges</dc:creator>
		<pubDate>Mon, 26 Jan 2009 06:20:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.pythian.com/blogs/1463/apparent-vs-actual-data-integrity#comment-333450</guid>
		<description>Really have to agree with you on this one.  Silent truncation is poisonous for applications because once you start ignoring the errors it&#039;s quite painful to go back and fix them properly.  It&#039;s the same problem as adding constraints to a schema that already has bad data.</description>
		<content:encoded><![CDATA[<p>Really have to agree with you on this one.  Silent truncation is poisonous for applications because once you start ignoring the errors it&#8217;s quite painful to go back and fix them properly.  It&#8217;s the same problem as adding constraints to a schema that already has bad data.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

