解决MySQL客户端输出窗口显示中文乱码问题的办法

解决MySQL客户端输出窗口显示中文乱码问题的办法,第1张

最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示:

上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的字符编码不对造成的,可以使用如下的命令查看输出窗口使用的字符编码:show

variables

like

'char%'

命令执行完成之后显示结果如下所示:

可以看到,现在是使用utf8字符编码来显示中文数据的,但是因为 *** 作系统是中文 *** 作系统,默认使用的字符集是GB2312,所以需要把输出窗口使用的字符编码改成gb2312才能够正常显示中文。使用如下的命令设置输出窗口使用的字符编码:set

character_set_results=gb2312

命令执行完成之后就可以把输出窗口使用的字符编码改成gb2312,如下图所示:

此时我们再次执行查询,表中的中文数据就可以正常显示了,如下图所示:

以上就是为大家分享的解决MySQL客户端输出窗口显示中文乱码问题的办法,希望对大家的学习有所帮助。

MySQL从8.0开始支持窗口函数。也就是分析函数

序号函数:ROW_NUMBER()、RANK()、DENSE_RANK()

分布函数:PERCENT_RANK()、CUME_DIST()

前后函数:LAG()、LEAD()

头尾函数:FIRST_VALUE()、LAST_VALUE()

其它函数:NTH_VALUE()、NTILE()

例子:

首先有一个表字段:id score(分数)user_id

1.序号函数:ROW_NUMBER()、RANK()、DENSE_RANK()

用途:显示分区中的当前行号,对查询结果进行排序.

ROW_NUMBER():顺序排序——1、2、3 RANK():并列排序,跳过重复序号——1、1、3 DENSE_RANK():并列排序,不跳过重复序号——1、1、2

执行sql:

2.分布函数:PERCENT_RANK()、CUME_DIST()

用途:每行按照公式(rank-1) / (rows-1)进行计算。其中,rank为RANK()函数产生的序号,rows为当前窗口的记录总行数

3.前后函数:LAG()、LEAD()

LAG和LEAD分析函数可以在同一次查询中取出同一字段的前N行的数据(LAG)和后N行的数据(LEAD)作为独立的列

在实际应用当中,若要用到取今天和昨天的某字段差值时,LAG和LEAD函数的应用就显得尤为重要。当然,这种 *** 作可以用表的自连接实现,但是LAG和LEAD与LEFT JOIN、RIGHT JOIN等自连接相比,效率更高,SQL更简洁。下面我就对这两个函数做一个简单的介绍。

函数语法如下:

lag(exp_str,offset,defval) OVER(PARTITION BY …ORDER BY …)

lead(exp_str,offset,defval) OVER(PARTITION BY …ORDER BY …)

参数说明:

exp_str是字段名

offset是偏移量,即是上1个或上N个的值,假设当前行在表中排在第10行,则offset 为3,则表示我们所要找的数据行就是表中的第7行(即10-3=7)。

defval默认值,当两个函数取上N/下N个值,当在表中从当前行位置向前数N行已经超出了表的范围时,LAG()函数将defval这个参数值作为函数的返回值,若没有指定默认值,则返回NULL,那么在数学运算中,总要给一个默认值才不会出错。

执行sql:

以第一行为例:4.0上一条记录(lag)是没有的,所有有赋予默认值0,4.0的下一条记录(lead)还是4.0,可以通过偏移量调整上下N条记录

注意:这里是序号的上一条或下一条

4.头尾函数:FIRST_VALUE(expr)、LAST_VALUE(expr)

用途:返回第一个(FIRST_VALUE(expr))或最后一个(LAST_VALUE(expr))expr的值

执行sql:

FIRST_VALUE()的结果容易理解,直接在结果的所有行记录中输出同一个满足条件的首个记录;

LAST_VALUE()默认统计范围是 rows between unbounded preceding and current row,也就是取当前行数据与当前行之前的数据的比较。

那么如果我们直接在每行数据中显示最后的那个数据,需在order by 条件的后面加上语句: rows between unbounded preceding and unbounded following , 也就是前面无界和后面无界之间的行比较。

加上语句,执行sql:

结果:

简单理解就是,取最大的还是最小的结合ORDER BY使用,或者取第一个还是或者最后一个

参考: https://baijiahao.baidu.com/s?id=1728966619393719484&wfr=spider&for=pc

你可以选择卸载

卸载说明:

http://wwwlouxuemingcom.blog.163.com/blog/static/2097478220120121019589/

安装图解:

http://www.jb51.net/article/23876.htm

或进行下列 *** 作进行解除。

首先检查MySQL 服务没有启动》如果没有启动,则要启动这个服务。

昨天,重起服务器后出现MySQL 'localhost' (10061)错误,开始以为是因为数据库链接打开过多,数据库资源耗尽的缘故,但是重启服务器以后,仍旧出现问题,于是在网上查找解决方法。大体如下:

解决办法:

第一步

删除c:\windows\下面的my.ini

第二步

打开c:\mysql\bin\winmysqladmin.exe 输入用户名 和密码

第三步 在dos下 输入 mysqld-nt -remove 删除服务

在接着输入 mysqld-nt -install

第四步 输入mysql 启动成功。

其它可参考的方法:

1.看看hosts文件中localhost是不是指向127.0.0.1

2.如果是没启动mysql服务,则可运行net start mysql。

3.一些相关命令:

mysqld-nt --install #启动Mysql

mysql #运行Mysql

mysql -h ipAddress -u username -p

或者:直接去bin里点mysqld.exe或mysqld-nt.exe,看下它的进程能否正常运行,如不行,再去控制面板,服务里去启动它,看下是什么错误。如果不行,就在添加删除里删去mysql,然后再重装mysql,一般都能解决问题,可以在安装前备份一下DATA。

Error: Can't connect to MySQL server on 'localhost' (10061)

Errno.: 2003

错误编号:2003

问题分析:

无法连接到 MySQL 服务器,可能的情况为:

1、MySQL 服务没有启动,一般是在异常的情况下 MySQL 无法启动导致的,比如无可用的磁盘空间,my.ini 里 MySQL 的 basedir 路径设置错误等;

2、MySQL 服务器资源紧张,导致无法连接。

解决方法:

1、如果你是虚拟主机用户(购买的空间),则联系空间商检查 MySQL 是否正常启动,并确认 MySQL 的配置信息(是否为 localhost);

2、如果你是独立主机用户(拥有管理主机权限),则按下面步骤检查:

1)检查磁盘空间是否还有剩余可用空间,尽量保持有足够的磁盘空间可用。

2)检查 my.ini 里的 basedir (MySQL 安装地址) 和 datadir (数据目录存放地址)等参数设置是否正确,然后重新启动下 MySQL 服务。

还有一种方法是将服务器的windows补丁。

微软9月9日发布了TCP/IP更新补丁(KB967723),如果服务器开启自动更新或者有自动更新软件下载更新了这个补丁,那么就会出现这个问题。

有人可能会问,为什么9号出现的补丁,到现在才发现问题?

大家都知道,服务器不是每天都重启的,有的服务器可能一个月或者一年半载重启一次,有的可能在9月9日以后重启过服务器,所以补丁生效了(我个人这么认为)。

补丁卸载方法:登录服务器,进入控制面板 --- 添加和删除程序 -- (勾选上方的“显示更新”)

在里面可以看到更新的KB967723这个补丁,然后就想卸载普通软件一样卸载,卸载中会提示你,如果卸载可能导致程序运行出错,没关系,选择“是”,继续卸载。

卸载完成后程序服务器,一切正常!

至于该补丁修补什么漏洞,卸载后是否会出现服务器安全隐患,这个先不说,要MYSQL正常运行,临时的解决办法只有如此。

还有种情况下,你可以这样解决

Discuz! info: Can not connect to MySQL server

Time: 2007-11-13 6:25pm

Script: /bbs/index.php

Error: Can't connect to MySQL server on 'localhost' (10061)

Errno.: 2003

Similar error report has beed dispatched to administrator before.

正常情况下原因如下:

网站论坛访问量过大,数据库连接超过最大连接数.MYSQL数据库服务停止了.

解决方法(针对WIN系统):

1, 首先到系统服务里面找到MYSQL服务并启动MYSQL服务.

2, 到MYSQL安装目录找到MY.INI文件,打开MY.INI查找max_connections 修改连接数为1000 重启IIS与MYSQL服务.

window 下

命令行下输入:

>cd E:\mysql\bin

>mysqladmin -u root password 你的密码

>mysql -u root -p

Enter password: 你的密码

便可以

、、、、、、、、、、、、、、、、、

找到了根本原因,在此凉一下:

导致此问题的根源在:因为给mysql的root设置了密码,而不是最初安装好时的密码为空,所以使用

mysqladmin version这样子不行了,必须这样子:mysqladmin -uroot -p version,回车后按照提示要求输入

root密码即可成功运行命令。

第一种方法其实就是在不知道root密码的情况下的一种解决办法,那样子启动不用密码即可进mysql

里面并进行root密码的修改,解决忘记了root密码的问题。

输入命令“mysqladmin -u root password 你的密码”作用是修改root用户的密码,这条命令能够不经

提示输入原密码而成功执行,也说明了原密码是空。之后使用修改后的密码自然能够成功登录。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。怎么更改密码?

首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的,所以一般用户无法更改密码

,除非请求管理员。

方法一

使用phpmyadmin,这是最简单的了,修改mysql库的user表,

不过别忘了使用PASSWORD函数。

方法二

使用mysqladmin,这是前面声明的一个特例。

mysqladmin -u root -p password mypasswd

输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。

把命令里的root改为你的用户名,你就可以改你自己的密码了。

当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,

那么这种方法就是无效的。

而且mysqladmin无法把密码清空。

下面的方法都在mysql提示符下使用,且必须有mysql的root权限:

方法三

mysql>INSERT INTO mysql.user (Host,User,Password)

VALUES('%','jeffrey',PASSWORD('biscuit'))

mysql>FLUSH PRIVILEGES

确切地说这是在增加一个用户,用户名为jeffrey,密码为biscuit。

在《mysql中文参考手册》里有这个例子,所以我也就写出来了。

注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES。

方法四

和方法三一样,只是使用了REPLACE语句

mysql>REPLACE INTO mysql.user (Host,User,Password)

VALUES('%','jeffrey',PASSWORD('biscuit'))

mysql>FLUSH PRIVILEGES

方法五

使用SET PASSWORD语句,

mysql>SET PASSWORD FOR " = PASSWORD('biscuit')

拟也必须使用PASSWORD()函数,

但是不需要使用FLUSH PRIVILEGES。

方法六

使用GRANT ... IDENTIFIED BY语句

mysql>GRANT USAGE ON *.* TO " IDENTIFIED BY 'biscuit'

这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES。

注意: PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。

MySQL 忘记口令的解决办法

如果 MySQL 正在运行,首先杀之: killall -TERM mysqld。

启动 MySQL :bin/safe_mysqld --skip-grant-tables &

就可以不需要密码就进入 MySQL 了。

然后就是

>use mysql

>update user set password=password("new_pass") where user="root"

>flush privileges

重新杀 MySQL ,用正常方法启动 MySQL 。

linux下

方法一:

# /etc/init.d/mysql stop

# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

# mysql -u root mysql

mysql>UPDATE user SET Password=PASSWORD('newpassword') where USER='root'

mysql>FLUSH PRIVILEGES

mysql>quit

# /etc/init.d/mysql restart

# mysql -uroot -p

Enter password: <输入新设的密码newpassword>

mysql>

方法二:

直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码:

# mysql -udebian-sys-maint -p

Enter password: <输入[client]节的密码>

mysql>UPDATE user SET Password=PASSWORD('newpassword') where USER='root'

mysql>FLUSH PRIVILEGES

mysql>quit

# mysql -uroot -p

Enter password: <输入新设的密码newpassword>

mysql>

方法三:

# mysql -uroot -p

Enter password: <输入/etc/mysql/debian.cnf文件中[client]节提供的密码>

详细出处参考:http://www.jb51.net/article/26505.htm


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

原文地址:https://54852.com/zaji/7441163.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存