Hello Clifford, It was really nice of you to provide an insight into the non strict mode. I agree to what you said regarding the length of the field. I was developing the project using sqlite and since it was ready to go live i wanted to test it using mysql in my local system. When i ran syncdb i was getting the above said error and just for the sake of testing i changed the mode to non strict. Am not planning the same for my production server. Once again thanks a lot for your input. Cheers.
Thanks and Regards, Swaroop Shankar V On Mon, Mar 19, 2012 at 2:22 AM, CLIFFORD ILKAY <clifford_il...@dinamis.com>wrote: > On 03/17/2012 04:49 PM, Swaroop Shankar V wrote: > >> Hello All, >> I was developing a website and the development was all done using sqlite >> database. Now the development is almost complete so i need to test the >> site using mysql. When i did a syncdb on a fresh database i got the >> following error: >> > [snip] > > _mysql_exceptions.Warning: Data truncated for column 'name' at row 1 >> >> As you can see its a mysql warning since i had changed mysql mode to non >> strict. >> > > Hello, > > Others have already explained why this happened. Let me add that you > should not run MySQL in non-strict mode. Django is actually saving you from > creating junk data in this case but that would not necessarily be the case > if you were to do insert or update operations on that same database with > something other than Django. > > MySQL used to have a "feature", which I considered a bug, whereby it would > happily accept a string longer than the width of the column in which that > data was to be stored and not even mention that it had truncated your > string to fit into that particular column. > > Recent versions of MySQL allow you to set the database to non-strict mode > whereby it will still allow you to insert a string longer than the width of > a column but at least, it will generate a warning message. Older versions > would just silently truncate. Either scenario is unacceptable in a > database. Why would you want the database to tell you after-the-fact, "Oh, > by the way, I just screwed up your data." after-the-fact? The first job of > a database should be to protect data integrity so if you're attempting to > insert 51 characters into a varchar(50) column, it should not accept it > under any circumstances and throw an exception. > > The MySQL docs <http://dev.mysql.com/doc/**refman/5.0/en/server-sql-mode.* > *html <http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html>>, > which I've quoted below, explains this. > > ### > TRADITIONAL > > Make MySQL behave like a “traditional” SQL database system. A simple > description of this mode is “give an error instead of a warning” when > inserting an incorrect value into a column. > Note > > The INSERT/UPDATE aborts as soon as the error is noticed. This may not > be what you want if you are using a nontransactional storage engine, > because data changes made prior to the error may not be rolled back, > resulting in a “partially done” update. (Added in MySQL 5.0.2) > > When this manual refers to “strict mode,” it means a mode where at least > one of STRICT_TRANS_TABLES or STRICT_ALL_TABLES is enabled. > ### > -- > Regards, > > Clifford Ilkay > Dinamis > 1419-3266 Yonge St. > Toronto, ON > Canada M4N 3P6 > > <http://dinamis.com> > +1 416-410-3326 > > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-users@googlegroups.com. > To unsubscribe from this group, send email to django-users+unsubscribe@** > googlegroups.com <django-users%2bunsubscr...@googlegroups.com>. > For more options, visit this group at http://groups.google.com/** > group/django-users?hl=en<http://groups.google.com/group/django-users?hl=en> > . > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.