在utf8_general_ci
和之间utf8_unicode_ci
,性能方面有什么不同吗?
如何将整个MySQL数据库字符集转换为UTF-8并将整理转换为UTF-8?
我试图通过phpMyAdmin导入一个大的sql文件...但它一直显示错误
'MySql服务器已经消失'
该怎么办?
其中一个答复的一个问题,我问昨天建议我要确保我的数据库能正确处理UTF-8字符.我怎么能用MySQL做到这一点?
我已经搜索了很多关于这个问题的信息.总而言之,这就是我的my.ini
样子:
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
database = abcdef
user = root
password = XXXXXX
default-character-set = utf8
[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8
max_connections = 200
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
Run Code Online (Sandbox Code Playgroud)
当我通过cmd进入mysql并发出:时show variables like "%character%";show variables like "%collation%";
,这就是我得到的:
+--------------------------+---------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从Symfony 3应用程序连接到MySQL数据库.但是当尝试从Symfony控制台命令创建MySQL模式时,我收到此错误:PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers
PHP和MySQL都在Docker容器中运行.
MySQL版本: 8.0.1
PHP版本: 7.1.3
司机: pdo_mysql
字符集: UTF8
DSN: "mysql:host=mysql;dbname=database;charset=UTF8;"
有任何想法吗?
情况:
如果已经提出这个问题,请提前抱歉,但解决方案对我不起作用.
无论我尝试什么,我都不能将表情符号存储在我的数据库中.他们被保存为????
.
正确保存的唯一表情符号只需要3个字节,如害羞的脸或太阳.
实际的utf8mb4无效.
它已经在Android和Ios上进行了测试.结果相同.
版本:
Mysql:5.5.49
CodeIgniter:3.0.0
步骤:
我修改了数据库字符集和排序规则属性.
ALTER DATABASE my_database CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci
我修改了表字符集和排序规则属性.
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
我在可能的情况下将表的每个字段设置为Encoding:UTF-8(ut8mb4)
和Collation:utf8mb4_unicode_ci
我在CodeIgniter应用程序中修改了数据库连接.
我运行了以下内容: SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci
最后我也试过这个:
REPAIR TABLE table_name;
OPTIMIZE TABLE table_name;
一切都应该设置正确,但它不起作用.
数据库设置:
这是运行以下命令的结果:
`SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';`
Run Code Online (Sandbox Code Playgroud)
表设置:
表结构的screeshot:
数据库连接:
这些是database.php中的数据库连接设置(注意这不是唯一的数据库,还有其他使用utf8连接的数据库)
$db['my_database'] = array(
'dsn' => …
Run Code Online (Sandbox Code Playgroud) 我希望每个表和数据库(要创建)都是与emojis一起使用的utf-8.我知道我需要在里面定义一些变量my.cnf
:
init_connect='SET collation_connection = ??? '
init_connect='SET NAMES ???'
character-set-server = ???
collation-server = ???
Run Code Online (Sandbox Code Playgroud)
但是,我不知道该放什么???
.我放在里面my.cnf
怎么样?
我发现(艰难的方式)MySQL的UTF8字符集只有3个字节.一些研究表明,我可以通过更改表来利用utf8mb4
排序规则来解决这个问题,并获得UTF应该是完整的4个字节.
我已经这样做了.我的数据库,表格和列都已被ALTER
编辑以利用此字符集.但是,如果我的数据的unicode代码点大于U + FFFF,我仍会收到此消息:
Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='"
Run Code Online (Sandbox Code Playgroud)
我发现我有以下设置:
> show variables like '%collation%';
collation_connection utf8_general_ci
collation_database utf8mb4_general_ci
collation_server utf8mb4_general_ci
Run Code Online (Sandbox Code Playgroud)
该collation_server
是通过更改设置my.cnf
.我的问题是,如何更改连接?我目前使用SQL Alchemy和pymysql连接到数据库,如下所示:
connect_string = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(DB_USER, DB_PASS, DB_HOST, DB_PORT, DATABASE)
engine = create_engine(connect_string, convert_unicode=True, echo=False)
session = sessionmaker()
session.configure(bind=engine)
Run Code Online (Sandbox Code Playgroud)
我能做些什么来改变从utf8_general_ci
到utf8mb4_general_ci
通过SQL炼金术连接时?
我想在mysql中创建一个新的db.我将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会重启.但是如果我必须设置默认字符集,还有其他方法可以让mysql再次运行吗?
mysql ×10
utf-8 ×3
php ×2
android ×1
codeigniter ×1
collation ×1
database ×1
doctrine-orm ×1
ios ×1
pdo ×1
phpmyadmin ×1
pymysql ×1
python ×1
sqlalchemy ×1
symfony ×1
unicode ×1
utf8mb4 ×1