MYSQL 有数据却查询不到.什么原因啊

MYSQL 有数据却查询不到.什么原因啊,第1张

mysql数据乱码问题可能有以下三种原因:

1.server本身设定问题,例如还停留在latin1版本

2.table的语系设定问题(包含character与collation)

3.客户端程式(例如php,java)的连线语系设定问题

建议使用utf8!!!!

想要避免mysql的中文乱码问题,可以尝试以下方法:

1,对于版本问题,建议去官网更新最新的版本或者比较好用的版本;

2,创建数据库,创建表时没有对字符编码进行设定会造成乱码问题:

创建数据库的时候:CREATE DATABASE `test`

CHARACTER SET 'utf8'

COLLATE 'utf8_general_ci'

建表的时候 CREATE TABLE `database_user` (

`ID` varchar(40) NOT NULL default '',

`UserID` varchar(40) NOT NULL default '',

) ENGINE=InnoDB DEFAULT CHARSET=utf8

3,对于第三种情况,参考一下方法:

编辑linux服务器中/etc/my.cnf文件,在[mysql]段加入default_character_set=utf8

如果只是调试遇到乱码问题:

在编写Connection URL时,加上?useUnicode=true&characterEncoding=utf-8参数

并且在网页代码中加上一个"set names utf8"或者"set names gbk"的指令,告诉MySQL连线内容都要使用utf-8或者gbk。

utf8或者gbk

项目中遇见的问题

存储的联系人2200多条。每次根据机构级别 ol 来查询的。

select * from ADRESS_BOOK_USER where ol>=9    

ol  小于10的都可以查出来,但是 大于10的就是查不出来,

sql 写的也没有问题,就是查不出数据。

经仔细审查,原来存表的时候数据结构给写错了。

ol 应该用int 类型,当初存成了字符串类型。症结问题就在此。

以后,不要闲麻烦, 数据类型一定要精确,否则给后来的查询埋炕。

最后将sql 语句修改一下,select * from ADRESS_BOOK_USER where ol+0>=9  就可以查出来了。

ol+0  ➕0 代表将字符串强转为int 类型。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9958231.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存