<div dir="ltr">Hi Steven,<div><br></div><div>Nice catch! This is not the first time MySQL has played a joke on us...</div><div><br></div><div>I think, we can fix this easily by adding a callback function, which will set the proper sql_mode value, when a DB connection is retrieved from a connection pool.</div>
<div><br></div><div>We'll provide a fix to oslo-incubator soon.</div><div><br></div><div>Thanks,</div><div>Roman</div><div><br></div><div>[1] <a href="http://www.enricozini.org/2012/tips/sa-sqlmode-traditional/">http://www.enricozini.org/2012/tips/sa-sqlmode-traditional/</a></div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Sep 11, 2013 at 1:37 PM, Steven Hardy <span dir="ltr"><<a href="mailto:shardy@redhat.com" target="_blank">shardy@redhat.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
I'm investigating some issues, where data stored to a text column in mysql<br>
is silently truncated if it's too big.<br>
<br>
It appears that the default configuration of mysql, and the sessions<br>
established via sqlalchemy is to simply warn on truncation rather than<br>
raise an error.<br>
<br>
This seems to me to be almost never what you want, since on retrieval the<br>
data is corrupt and bad/unexpected stuff is likely.<br>
<br>
This AFAICT is a mysql specific issue[1], which can be resolved by setting<br>
sql_mode to "traditional"[2,3], after which an error is raised on truncation,<br>
allowing us to catch the error before the data is stored.<br>
<br>
My question is, how do other projects, or oslo.db, handle this atm?<br>
<br>
It seems we either have to make sure the DB enforces the schema/model, or<br>
validate every single value before attempting to store, which seems like an<br>
unreasonable burden given that the schema changes pretty regularly.<br>
<br>
Can any mysql, sqlalchemy and oslo.db experts pitch in with opinions on<br>
this?<br>
<br>
Thanks!<br>
<br>
Steve<br>
<br>
[1] <a href="http://www.enricozini.org/2012/tips/sa-sqlmode-traditional/" target="_blank">http://www.enricozini.org/2012/tips/sa-sqlmode-traditional/</a><br>
[2]<br>
<a href="http://rpbouman.blogspot.co.uk/2009/01/mysqls-sqlmode-my-suggestions.html" target="_blank">http://rpbouman.blogspot.co.uk/2009/01/mysqls-sqlmode-my-suggestions.html</a><br>
[3] <a href="http://dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html" target="_blank">http://dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html</a><br>
<br>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</blockquote></div><br></div>