21286 Posts in 5733 Topics by 2602 members
|
Page:
1
|
Go to End | |
| Author | Topic: | 2011 Views |
-
2.4 and mysql utf-8

29 March 2010 at 3:08pm Last edited: 29 March 2010 4:23pm
I remember having seen a statement that the mysql connection in SS 2.4 would default to utf-8, but I cannot find that statement anymore. It might have been in a bug ticket about utf-8. So my question is, how about the default for 2.4, will mysql connections default to utf-8?
If it's meant to be like that, then it didn't work in my tests. The code in MySQLDatabase.php Line 43
public static function set_connection_charset($charset = 'utf8') {
self::$connection_charset = $charset;
}and line 59:
if(self::$connection_charset) {
$this->query("SET CHARACTER SET '" . self::$connection_charset . "'");
$this->query("SET NAMES '" . self::$connection_charset . "'");
}did not result in setting the connection to UTF-8. Only adding there
$this->query("SET CHARACTER SET 'utf8'");
$this->query("SET NAMES 'utf8'");did it. But that would be hacking the core. I think the current code had flexibility in mind, so let me propose a solution which is flexible but still enforces UTF-8 (or whatever I want) if I want to. Simply add in mysite/_config.php one setting encoding in $databaseConfig and have MySQLDatabase.php use it (if present):
$databaseConfig = array(
"type" => "MySQLDatabase",
"server" => "localhost",
"username" => "xxxxxxxx",
"password" => 'xxxxxxxx',
"database" => "xxxxxxxx",
"encoding" => "utf8",
);Another solution would be to add Malte's UTF8MySQLDatabase class, good enough for me, but that would not give the flexibility to force any encoding.
-
Re: 2.4 and mysql utf-8

29 March 2010 at 4:25pm
How its designed to work is the following line is included in your mysite/_config file when you install so yes this is the 'default'.
MySQLDatabase::set_connection_charset('utf8');
-
Re: 2.4 and mysql utf-8

29 March 2010 at 5:37pm
Thanks Will, I'll add that line.
My tests were 2.4 alpha installs upgraded to 2.4 beta, without overwriting the mysite/_config, so I assume you added that line between 2.4 alpha and beta.
Anyway, a good solution.
-
Re: 2.4 and mysql utf-8

17 June 2010 at 12:09pm Last edited: 17 June 2010 12:35pm
I am getting this error does it matter, what does it mean?
Error: Couldn't run query: SET CHARACTER SET 'utf8'
At line 536 in /home/sites/mysite.co.uk/public_html/sapphire/core/model/MySQLDatabase.phpuser_error(Couldn't run query: SET CHARACTER SET 'utf8' ,256) line 536 of MySQLDatabase.php MySQLDatabase->databaseError(Couldn't run query: SET CHARACTER SET 'utf8' | ,256) line 134 of MySQLDatabase.php MySQLDatabase->query(SET CHARACTER SET 'utf8') line 60 of MySQLDatabase.php MySQLDatabase->__construct(Array) line 94 of DB.php DB::connect(Array) line 121 of main.php
EDIT:
and this:
Error: Couldn't run query: SET CHARACTER SET 'utf8'
At line 536 in /home/sites/mysite.co.uk/public_html/sapphire/core/model/MySQLDatabase.phpCouldn't run query: SET CHARACTER SET 'utf8'
Line 536 of MySQLDatabase.php
MySQLDatabase->databaseError(Couldn't run query: SET CHARACTER SET 'utf8' | ,256)
Line 134 of MySQLDatabase.php
MySQLDatabase->query(SET CHARACTER SET 'utf8')
Line 60 of MySQLDatabase.php
MySQLDatabase->__construct(Array)
Line 94 of DB.php
DB::connect(Array)
Line 121 of main.phpEDIT SOLVED: Changed the "server" in the _config.php by mistake!
| 2011 Views | ||
|
Page:
1
|
Go to Top |



