如何设置默认字符集?

16

我想在MySQL中创建一个新的数据库。 我将默认字符集设置为utf8,但是当我尝试重新启动数据库时,MySQL无法启动,并发布了以下提示:

正在尝试启动服务器... 无法重新连接到MySQL服务器。 服务器无法启动。

插件“FEDERATED”已禁用。

C:\ Program Files \ MySQL \ MySQL Server 5.5 \ bin \ mysqld:未知变量'default-character-set = utf8'

中止

C:\ Program Files \ MySQL \ MySQL Server 5.5 \ bin \ mysqld:关闭完成

我知道取消默认字符集后,MySQL将重新启动。 但是,如果我必须设置default-character-set,是否有其他方法使MySQL再次工作?


1
你在 MySQL 的配置文件中设置了这个吗? 尝试使用字符集 character-set-server=utf8 - EO2
我已经尝试过了,但它仍然显示相同的提示,还不能重新启动。 - kaiwii ho
2
是的,在“my.ini”文件中。 default-character-set在5.5版本中已被弃用。 这个链接可能会有用:http://dev.mysql.com/doc/refman/5.5/en/charset-configuration.html 或者可以查找一些随mysql一起提供的示例配置文件。已经创建了一个数据库吗? - EO2
顺便问一下,你以前用过mysql5.5的工作台吗?我想通过还原页面设置一个新的数据库,但不幸的是我没有找到有关在还原页面中使用sql文件创建新数据库的详细信息。你知道这个修改详细信息的开关在哪里吗? - kaiwii ho
此外,相关答案在这里:https://dev59.com/v3A75IYBdhLWcg3wBkO1#3513812。 - dma_k
显示剩余2条评论
3个回答

32

我遇到了类似的问题。正如EO2所指出的,答案是在5.5中default-character-set被弃用了。相反,你应该使用:

character-set-server = utf8

顺便提一句,回答问题最好直接回答,而不是留下评论... ;-)


你会将这个放在my.cnf的哪个部分? - cazort
我遇到了“Unknown option: character-set-server”的问题,但是如果我添加一个“mysqld”部分并在那里添加它,它就可以正常工作。这很重要,因为在“client”部分中这样做不起作用(尽管我不确定它是否有影响)。 - rubo77

7

在运行mysqlslap时,我遇到了类似的问题,出现以下错误:

mysqlslap unknown variable 'default-character-set=utf8mb4'

经过多次调查,我发现default-character-set被设置在另一个文件中,而不是所有我更改的配置文件中。

这个选项设置在/etc/mysql/mariadb.conf.d/50-client.cnf文件中,所以我只需要注释掉这一行default-character-set = utf8mb4,然后一切正常了。

我在Debian 9上运行MySQL。如有人遇到相同问题,可以参考以上步骤解决。


4

今天我遇到了同样的问题,但是版本是5.7.31。对我来说,注释掉那一行确实起作用了,但是如何在配置文件中设置字符集呢?

这里有一个回复:https://dev.mysql.com/doc/refman/5.7/en/charset-applications.html

因此,要在服务器启动时指定字符设置,例如我们可以在两个文件中添加以下内容(对我来说,这些文件是:50-client.cnf50-mysql-clients.cnf - 都在/etc/mysql/mariadb.conf.d/目录下):

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

请记住 "mysqld" 部分非常重要,因为在 "client" 部分将无法工作。


1
./mariadb.conf.d/50-client.cnf 文件中,我没有 [mysql] 部分,所以我添加了它。 - rubo77
是的,请从[client]部分中删除任何字符集,并添加一个名为[mysqld]的部分,其中值按@elvisef建议的方式设置。 - Constantine Kurbatov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接