- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 libmysqlclient 编写 C 程序以将数据(令人惊讶地)插入数据库。代码插入的表的字符集及其排序规则是:
CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
在我的 C 程序中,我使用 mysql_set_character_set()
来更改字符集;问题是这个函数只改变字符集而不是排序规则。如果我使用 mysql_get_character_set_info
查询字符集和排序规则,结果是:
char-set=utf8mb4, collation=utf8mb4_general_ci
根据 MySQL documentation :
SET NAMES indicates what character set the client will use to send SQL statements to the server. Thus, SET NAMES 'cp1251' tells the server, “future incoming messages from this client are in character set cp1251.” It also specifies the character set that the server should use for sending results back to the client.
所以我决定使用 mysql_options
和 MYSQL_INIT_COMMAND
更改连接排序规则:
SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
生成的函数调用如下所示(我在 mysql_real_connect()
之前调用了它):
if(mysql_options(conn, MYSQL_INIT_COMMAND,
"SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';")) {
// log the errors and do proper actions
}
但是这个命令似乎不能改变字符集和排序规则!因为现在如果我使用 mysql_get_character_set_info()
查询字符集,结果是:
char-set=latin1, collation=latin1_swedish_ci
这里有趣的是,在 MySQL 端,如果我启用日志并使用 MYSQL_INIT_COMMAND
命令执行程序!但是 mysql_get_character_set_info()
没有显示这个!再次根据 libmysql 的文档:
int mysql_set_character_set(MYSQL *mysql, const char *csname)
This function is used to set the default character set for the current connection. The string csname specifies a valid character set name. The connection collation becomes the default collation of the character set. This function works like the SET NAMES statement, but also sets the value of mysql->charset, and thus affects the character set used by mysql_real_escape_string()
我想以 mysql_real_escape_string()
受到影响的方式更改字符集和排序规则。正确的做法是什么?
最佳答案
root
用户不执行 init 命令。 (更具体地说,任何 SUPER
用户。)建议您为您的应用程序创建一个不同的用户。
不要忘记您的表列也应声明为CHARACTER SET utf8mb4
。
关于mysql - 使用 libmysqlclient C API 设置 collation_connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39446292/
我刚刚用 Ubuntu 10.04.1 amd64 服务器构建了一个新的开发盒,安装了所有的库和东西,但现在我的程序在 libmysqlclient16 中随机出现段错误。 只是为了消除我试图降级到
我有多个线程需要连接到 MySQL 服务器的单个实例。如果每个线程都创建并处理自己的连接,那么一切都会按预期进行。我想像这样实现一个简单的连接池: void query_user(MYSQL* con
在 Amazon EC2 上(uname -r 给出“3.4.37-40.44.amzn1.x86_64”,我听说它基于 Cent OS)我尝试安装: yum install mysql yum in
我正在 Linux 平台上构建 C 应用程序。我需要使用 libmysqlclient 连接到数据库。 我下载了linux源码包mysql-connector-c-6.0.2.tar.gz。我按照说明
我在使用 zappa 部署的 AWS lambda 上运行了 Flask API。 虽然实例化它无法找到 libmysqlclient.so.18 文件,我认为这会消耗大量时间。 附加图像中的错误消息
我正在尝试使用 flatpak 构建一个 Vala 程序。我需要连接到 mysql 服务器,这就是为什么我需要将 libmysqlclient 与我的 flatpak 捆绑在一起。 这就是我将 mys
ruby 2.6.3乌类图16.04无法找到包 libmysqlclient-dev 说明:获取mysql2 0.5.2安装带有 native 扩展的 mysql2 0.5.2Gem::Ext::Bu
我设置了 Crontab: [root@root mysql]# crontab -l 5 * * * * php /home/admin/public_html/scheduleSendMa
我想启动一个进程,但它显示“./log/BillServer_err:./Bill/BillServer: 加载共享库时出错:libmysqlclient.so.18: 无法打开共享对象文件:没有这样
我记得,几年前当我开始使用 mySQL 时,为了找到库(尤其是 mySQL 库!)而“就这样”设置东西是一场噩梦。就我而言,我相信 ldconfig 是解决问题的工具。快进到 2012 年 - 刚刚安
我开始安装,现在我收到文件依赖性错误 参见: root@ca [~/sitebuilder]# rpm -Uhv updates/*.rpm error: Failed dependencies: l
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
我一直在遵循 StackOverflow 帖子的建议,并且有人要求我使用 MySQLdb 来验证我的计算机上是否有 libmysqlclient.16.dylib。在 OS X 10.8 中哪里可以找
我正在尝试创建一个项目,但出现了错误。 [root@54 Source]# make -j8 -C ./Connector usa make: se ingresa al directorio `/l
我想研究mysql-connector-java依赖于.so文件 你知道mysql-connector是纯java的吗? 最佳答案 MySQL Connector/J 是纯 Java 驱动程序。它不需
我在一个共享托管服务器上运行一个 python 脚本,直到今天早上,该服务器的 MySQL 版本为 4。现在它有版本 5。我的 python 脚本无法再连接到 MySQL,因为它找不到 libmysq
问题:内存泄漏的原因是什么? 情况:我使用 C++ 和使用 MySQL C API 的 MySQL 构建了一个简单的命令行程序 问题是,程序从对象 malloc xx bytes" 中发生了许多“小”
我正在尝试捆绑安装,但中途出现错误: Make sure that `gem install mysql -v '2.9.1'` succeeds before bundling. and while
我尝试了日以继夜地谷歌搜索和阅读 MySQL 文档,但我似乎无法找出可能导致内存泄漏的原因。 它似乎是随机发生的,这是唯一泄漏的函数。 代码: unsigned long numRowQuery(st
我应该使用哪个来链接 mysqlclient 库?它们之间有什么区别?我似乎找不到答案。谢谢。 最佳答案 较新版本的 MySQL 客户端分发不包括“_r”版本。有些可能有从 libmyqslclien
我是一名优秀的程序员,十分优秀!