Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Django/MySQL站点设置为使用UTF-8_Mysql_Django_Utf 8 - Fatal编程技术网

将Django/MySQL站点设置为使用UTF-8

将Django/MySQL站点设置为使用UTF-8,mysql,django,utf-8,Mysql,Django,Utf 8,我想将Django站点设置为以一种简单的方式使用UTF-8 for MySQL,而不管MySQL安装是否使用UTF-8作为默认设置。除了使用UTF-8编码创建表外,我还在settings.py中的数据库初始化中添加了以下内容,以确保连接也使用UTF-8: 'OPTIONS': { 'init_command': 'SET storage_engine=INNODB; SET names "utf8"' } 这将导致一个错误: _mysql_exceptions.ProgrammingError

我想将Django站点设置为以一种简单的方式使用UTF-8 for MySQL,而不管MySQL安装是否使用UTF-8作为默认设置。除了使用UTF-8编码创建表外,我还在settings.py中的数据库初始化中添加了以下内容,以确保连接也使用UTF-8:

'OPTIONS': { 'init_command': 'SET storage_engine=INNODB; SET names "utf8"' }
这将导致一个错误:

_mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now")

正确的方法是什么?是否还有其他地方需要执行集合名称?

您只需使用SET一次,并附加其他命令,如下所示:

'SET storage_engine=INNODB,character_set_connection=utf8,collation_connection=utf8_unicode_ci'

我所要做的就是把它放到
settings.py

'OPTIONS': { 'init_command': 'SET storage_engine=INNODB' }
然后,我自己用MySQL创建了数据库:

CREATE DATABASE my_database CHARACTER SET utf8;
然后是所有
CREATE USER
GRANT
调用

之后,
/manage.py syncdb
/manage.py migrate
(因为我使用了South)完成了所有工作

到目前为止,它一直运作良好。也不需要更改任何MySQL配置文件。(系统管理员希望为其他用户保留默认使用
latin1
字符集的MySQL。)

检查:


对我来说很好,在db create.django.db.utils.OperationalError:(1193,“未知系统变量‘storage_engine’如何处理?@Joannis很抱歉稍后的回复,但是IIRC更高版本的MySQL删除了storage_engine变量并默认为InnoDB,因此您可以删除init_命令选项,它应该可以工作。
  'SET '
                'storage_engine=INNODB,'
                'character_set_connection=utf8,'
                'collation_connection=utf8_bin,'
                'SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED',
         }