title: Need to do dump & convert between Latin1 and UTF-8 in MySQL if existing data is all ASCII?
body: <p>I need to convert my application's so that just the text fields use UTF-8 for an encoding. It's fine if everything else is Latin1, as it is right now. The DB was created a long time ago long before I got here, and long before the group had any ambitions of internationalizing the app...</p>
  
  <p>My initial plan was to dump the schema and data separately, regex the schema to modify the text field definitions to use UTF-8, re-import the schema and then the data. I wrote a script to do it and it worked as expected.</p>
  
  <p>The problem was that this process took a long time when I ran it on an old snapshot of our production data ( > 2 hours ). I/O is obviously the bottleneck -- getting the dumps in and out were the bulk of that time. Granted, this was on my workstation and not a machine with more horsepower, but I'm concerned that even with a more powerful machine I won't be able to convert my (much larger) current production database within our weekly maintenance window, which is the only time the site can be down for a long stretch.</p>
  
  <p>Then I realized maybe I don't actually have to use the dump and convert strategy. Since our site currently only has English users, our text data doesn't contain any special characters (not even accented characters, it seems). Because of the overlap between the Latin1 and Unicode code points, shouldn't I be OK just ALTER TABLE'ing each table to change text fields' encodings? Or, is there some other issue that will have me doing the dump-and-convert thing anyway?</p>