在要求输入邮箱的文本域,请填写真实的邮件地址。非真实邮件地址,将收不到回复信息。

 分类:DataBase

MYSQL修改数据库、表、字段字符集

背景 由于mysql低版本暴了漏洞,所以客户就升级了mysql版本。升级到了最新版8.0.30,升级最新版后,应用就再也查不出数据,恢复到最初的版本有可以查到数据。经过确认最初数据库的表字符集为utf8,升级后这些字符集自动修改为utf8mb3。新版本数据库移除了utf8字符集,而应用本身不支持utf8mb3,所以需要修改这些字符集。经过再次确认最新版mysql以及应用都支持utf8mb4,最终决定修改字符集为utf8mb4。 修改字符集 数据库 ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 编码名称 [COLLATE ...]; 例如: ALTER DATABASE activity CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci; 表...

2年前 (2022-08-05) 886℃ 0评论 2喜欢

解决MYSQL连接异常:SQLSTATE[HY000] [2054]

异常信息 SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client[/app/thinkphp/library/think/db/Connection.php:295] 原因 MySQL8中用户的认证类型(Authentication type)默认为cacheing sha2 password导致的错误,需要修改用户权限认证方式为mysql_native_password。 我这个错误就是因为数据库升级导致的。 解决办法 数据库降级,退回以前版本改为mysql_native_password认证方式 数据库退回以前的版本,这里不进行操作了。下面只针对认证方式改回mysql_native_password的方式。 修...

2年前 (2022-07-29) 515℃ 0评论 1喜欢

使用sqlserver的排名函数实现积分排名

背景 客户需要针对用户的积分进行排名,按照积分的多少降序进行。为了更快更好的满足客户需求,就采取了SQL Server已有的排名函数RANK或DENSE_RANK来实现 RANK 返回结果集的分区内每行的排名。 行的排名是相关行之前的排名数加一。 ROW_NUMBER 和 RANK 类似。 ROW_NUMBER 按顺序对所有行进行编号(例如: 1、2、3、4、5)。 RANK 为相应关联提供相同的数值(例如: 1、2、2、4、5)。 RANK是运行查询时计算出的临时值 语法 RANK ( ) OVER ( [ partition_by_clause ] order_by_clause ) 如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名 DENSE_RANK 此函数返回结果集分区中每行的排名,排名值没有间断。...

2年前 (2022-04-06) 444℃ 0评论 3喜欢

MySQL存储过程中使用游标

游标 游标的设计是一种数据缓冲区的思想,用来存放SQL语句执行的结果。游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。 游标的特性 游标具有以下三个特性: 不敏感(Asensitive)数据库可以选择不复制结果集只读(Read only)不滚动(Nonscrollable)游标只能向一个方向前进,并且不可以跳过任何一行数据 游标的优点 游标是针对行操作的,对从数据库中SELECT查询得到的结果集的每一行可以进行分开的独立的相同或不同的操作,是一种分离的思想。游标是面向集合与面向行的设计思想之间的一种桥梁。 游标的缺点 游标的主要缺点是性能不高。游标的开销与游标中进行的操作相关,如果在游标中进行复杂的操作,开销会非常高。 游标的适用场景 MySQL数据库中,可以在存储过程、函数、触发器、事件中使用游标。 ...

3年前 (2021-08-28) 654℃ 0评论 42喜欢

Mysql脚本实现行转列

背景 某项目数据统计,为了更加直观显示一些数据,刚好有这个行转列的一个需求。行转列的需求其实在平常业务中也是比较常见的,在数据统计中使用的比较频繁。行转列以前也遇到过,之前数据库使用的是Microsoft SQL Server。目前使用的是MySQL数据库,这里也做一下简单的记录。 实现 结构与数据准备 为了更好的理解行转列,这里准备一张结构简单都表以及数据。 DROP TABLE IF EXISTS `project_completion_rate`; CREATE TABLE `project_completion_rate` ( `id` int(8) NOT NULL, `project_user` varchar(20) DEFAULT NULL, `project_content` varchar(20) DEFAULT NULL...

3年前 (2021-08-09) 420℃ 0评论 7喜欢

Microsoft SQL Server跨服务器查询

创建链接服务器 sp_addlinkedserver 创建链接服务器。 链接服务器让用户可以对 OLE DB 数据源进行分布式异类查询。 使用 sp_addlinkedserver 创建链接服务器后,可对该服务器运行分布式查询。 如果链接服务器定义为 SQL Server实例,则可执行远程存储过程。 语法 sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] [ , [ @provider= ] 'provider_name' ] [ , [ @datasrc= ] 'data_source' ] [ , [ @location= ] '...

3年前 (2021-05-23) 387℃ 0评论 5喜欢

.NET 使用MySql 8.0报caching_sha2_password错误的问题处理

背景 接手别人项目进行维护,使用Mysql 8.0 数据库正确还原,但是项目却无法启动,经过调试发现以下问题。 MySqlException Authentication method ‘caching_sha2_password’ not supported by any of the available plugins。 通常的报这个错误是因为它的身份验证方式是 mysql_native_password ,不是caching_sha2_password导致。 Mysql 官方相关资料:https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html 解决方法 首先找到MySql 8.0 的安装目录,看一下是否存在my...

4年前 (2020-10-05) 2261℃ 0评论 8喜欢

MySQL新增/修改/删除表中的列

因业务需求可能会导致数据存储结构发生变化,当数据保存到关系型数据库中时必将带来表结构的变化,这就涉及到对表中的列进行新增、修改、删除等操作。 在大多情况下数据库脚本执行必须是可重复的,因此对数据库表的任何表变动都需要进行判断,然而在MySQL数据库中通过SQL脚本进行列的变更就不太便利。下面记录一下曾经用到的一些MySQL脚本: USE DATABASE NAME; -- 这里要换数据库名称 DROP PROCEDURE IF EXISTS Operate_ColumnADD_Update_Delete; DELIMITER$$ -- 1表示新增列,2表示修改列类型,3表示删除列 CREATE PROCEDURE Operate_ColumnADD_Update_Delete(TableName VARCHAR(50),ColumnName VARCHAR(50)...

4年前 (2020-03-31) 432℃ 0评论 3喜欢

Host is not allowed to connect to this MySQL server问题

在应用部署后访问中出现一下错误: ERROR 1130: Host ‘localhost’ is not allowed to connect to this MySQL server 其实就是 MySQL 不允许当前的Host进行连接。为了本地以后测试方便,暴力解决方法如下: 1.在装有MySQL的机器上登录MySQL:mysql -uroot -p密码2.选择我mysql库,执行use mysql;3.更新user表,执行update user set host = ‘%’ where user = ‘root’;这一句执行完可能会报错,不用管它。4.执行FLUSH PRIVILEGES; 转载请注明:清风亦平凡 » Host is not allowed...

5年前 (2019-09-06) 609℃ 0评论 0喜欢

自增长INT主键与GUID主键优缺点

使用INT做主键的优点: 需要很小的数据存储空间,仅仅需要4 byte 。insert和update操作时使用INT的性能比GUID好,所以使用int将会提高应用程序的性能。 index和Join 操作,int的性能最好。 容易记忆。 支持通过函数获取最新的值 使用INT做主键的缺点 如果经常有合并表的操作,就可能会出现主键重复的情况。 使用INT数据范围有限制。如果存在大量的数据,可能会超出INT的取值范围。 很难处理分布式存储的数据表。 使用GUID做主键的优点: 它是独一无二的。 出现重复的机会少。 适合大量数据中的插入和更新操作。 跨服务器数据合并非常方便。 使用GUID做主键的缺点: 存储空间大(16 byte),因此它将会占用更多的磁盘大小。很难记忆。join操作性能比int要低...

8年前 (2016-09-23) 500℃ 0评论 0喜欢

数据库事物四大特性

数据库中事务的四大特性(ACID):原子性、一致性、隔离性、持久性。如果一个数据库支持事务的操作,那么该数据库必须要具备以下四个特性: 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 隔离性(Isolation) 隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。 持久性(Durability) 持久性是指一个事务一旦被提交...

8年前 (2016-04-10) 474℃ 0评论 0喜欢

Sql Server 中关闭/取消ID自增字段

在数据库进行表设计的时,大多情况下都习惯使用一个自增列作为主键,具体原因这里不会进行描述。在很多情况下需要对现有数据进行数据迁移,这个时候就需要保证迁移后的数据自增列的数据保持不变。SQL SERVER是支持这种迁移方式的。 首先就要先取消自增长,数据迁移完成后再恢复自增长即可。 SET IDENTITY_INSERT 允许将显式值插入表的标识列中。 语法 SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF } 实例 set IDENTITY_INSERT tableName on; INSERT INTO tableName (id,name) VALUES (2,'name'); set IDENTITY_INSER...

12年前 (2012-04-10) 2160℃ 0评论 6喜欢