netpx 发表于 2023-7-7 16:59

易语言 操作群晖的mariadb10 数据库

闲来想为近期做的项目做做纪录。多年前入手的群晖带有mariadb 10 版本的数据库。所以就想使用易语言操作连接写到数据库中保存。可mariadb不像操作mssql数据一样。遇到了这个问题,请懂的老师麻烦给回复一下原因。谢谢

使用Navicat Premium 连接群晖插件mariadb 10。创建数据库tw 。编码选择的utf8,排序规则utf8_general_ci。新建表,表名twjl。字段有yhname,yhadd,yhdate,yhfy都是文本类。

在使用连接MySql()后,通过   调试输出   显示连接正常。但是通过增加记录或是 执行SQL语句都提示我: Incorrect string value: '\xD6\xD0\xB9\xFA\xC1\xAA...' for column `tw`.`twjl`.`syname` at row 1 的错误。

百思不得其解。还掉过”坑“的大神给出解决之道!谢谢!

btc001 发表于 2023-7-7 17:30

本帖最后由 btc001 于 2023-7-7 17:31 编辑

插入字符太长了吧 改下类型吧
但是我看你错误字段名和你上面说的字段名不一样啊 一个是synama一个是yhname

netpx 发表于 2023-7-7 17:33

本帖最后由 netpx 于 2023-7-7 17:38 编辑

btc001 发表于 2023-7-7 17:30
插入字符太长了吧 改下类型吧
但是我看你错误字段名和你上面说的字段名不一样啊 一个是synama一个是yhname
类型都是varchar 255的。最长汉字也就50个。应该不超长度吧。sql语句 = “insert into twjl (syname) values ('中国联合网络通信有限公司')”这是sql语句。在Navicat Premium中使用查询。运行正常。

btc001 发表于 2023-7-7 17:39

netpx 发表于 2023-7-7 17:33
类型都是varchar 255的。最长汉字也就50个。应该不超长度吧。sql语句 = “insert into twjl (syname)...

那试试字母插入 如果可以就是编码的问题了

netpx 发表于 2023-7-7 17:46

btc001 发表于 2023-7-7 17:39
那试试字母插入 如果可以就是编码的问题了

把汉字打成字母。数据写入正常。这个应该是编码问题了。可这个是错在了易语言写命令行上呢?还是错在了数据库定义上了呢?麻烦给指点一二。

btc001 发表于 2023-7-7 19:00

netpx 发表于 2023-7-7 17:46
把汉字打成字母。数据写入正常。这个应该是编码问题了。可这个是错在了易语言写命令行上呢?还是错在了数 ...

易语言是gbk的 所以你要把数据库设置成gbk啊

netpx 发表于 2023-7-8 10:12

本帖最后由 netpx 于 2023-7-8 10:17 编辑

btc001 发表于 2023-7-7 19:00
易语言是gbk的 所以你要把数据库设置成gbk啊
老师。把数据库从库到表都改成GBK。使用易增加记录依然是 Incorrect string value:

易脚本:
.版本 2
.支持库 spec
.支持库 mysql

句柄 = 连接MySql (“192.168.144.156”, “root”, “112233445566”, “tw”, 3307)
sql语句 = “insert into twjl (yhname,yhdz) values ('中国','192.168.144.0')”
调试输出 (执行SQL语句 (句柄, sql语句))
取错误文本 (句柄, 服务器错误信息)
调试输出 (服务器错误信息)
断开MySql (句柄)


错误信息:
开始运行被调试程序
* 假
* “Incorrect string value: '\xD6\xD0\xB9\xFA' for column `tw`.`twjl`.`yhname` at row 1”
被调试易程序运行完毕

netpx 发表于 2023-7-8 10:45

本帖最后由 netpx 于 2023-7-8 10:46 编辑

这个问题经过我看大量的别人使用的脚本最后在原脚本的基础上添加上一句:问题解决。详细请向下看。
原脚本:
句柄 = 连接MySql (“192.168.144.156”, “root”, “112233445566”, “tw”, 3307)
sql语句 = “insert into twjl (yhname,yhdz) values ('中国','192.168.144.0')”
调试输出 (执行SQL语句 (句柄, sql语句))
取错误文本 (句柄, 服务器错误信息)
调试输出 (服务器错误信息)
断开MySql (句柄)

改成:
句柄 = 连接MySql (“192.168.144.156”, “root”, “112233445566”, “tw”, 3307)
sql语句 = “insert into twjl (yhname,yhdz) values ('中国','192.168.144.0')”
调试输出 (执行SQL语句 (句柄, “set names 'GBK'”))
调试输出 (执行SQL语句 (句柄, sql语句))
取错误文本 (句柄, 服务器错误信息)
调试输出 (服务器错误信息)
断开MySql (句柄)

问题解决。

感谢BTC001老师的回复。谢谢!!
页: [1]
查看完整版本: 易语言 操作群晖的mariadb10 数据库