Re: utf8 and mysql

2013-08-01 Thread Tim Bunce
On Thu, Aug 01, 2013 at 10:28:41AM +0300, Gabor Szabo wrote:
> On Wed, Jul 31, 2013 at 7:39 PM, Meir Guttman  wrote:
> > Dear Gabor,
> > You must include «mysql_enable_utf8 => 1» hash record in the connection 
> > attributes used when you create the DBI handle
> > my %conn_attrs = (RaiseError=> $RaiseError,
> >   PrintError=> $PrintError,
> >   AutoCommit=> $AutoCommit,
> >   mysql_enable_utf8 => 1);
> > my $dbh = DBI->connect
> >  ($dsn, $user_name, $password, \%conn_attrs);
> 
> That worked. Great. Thank you!
> 
> This was entirely unclear to me from the docs that it needs to be a
> separate key as I looked a couple of lines above the documentation of
> mysql_enable_utf8 where it showed another key, mysql_use_result, being
> in the actual connection string.

That seems like a bug.
Either it's a bug that mysql_enable_utf8=1 in the DSN should work,
or it's a bug that unrecognized items in the DSN should warn.

There is another, little-used, DSN style that might help:

DBI:mysql(mysql_enable_utf8=1):database=$attr->{database};host=$attr->{host}

The attributes after the driver name are extracted by the DBI and
applied to the $dbh returned from the drivers' connect method.
(So can't be used for attributes that need to be applied before
the connection is established.)

You can see it documented in https://metacpan.org/module/DBI#parse_dsn
and the connect section below it.

Tim.


Re: utf8 and mysql

2013-08-01 Thread Gabor Szabo
On Wed, Jul 31, 2013 at 7:39 PM, Meir Guttman  wrote:
> Dear Gabor,
> You must include «mysql_enable_utf8 => 1» hash record in the connection 
> attributes used when you create the DBI handle
> my %conn_attrs = (RaiseError=> $RaiseError,
>   PrintError=> $PrintError,
>   AutoCommit=> $AutoCommit,
>   mysql_enable_utf8 => 1);
> my $dbh = DBI->connect
>  ($dsn, $user_name, $password, \%conn_attrs);
>
> Meir
>

That worked. Great. Thank you!

This was entirely unclear to me from the docs that it
needs to be a separate key as I looked a couple of lines
above the documentation of mysql_enable_utf8
where it showed another key, mysql_use_result, being
in the actual connection string.

Gabor