一切福田,不離方寸,從心而覓,感無不通。

Category Archives: Database

SQL Server 数值四舍五入,小数点后保留2位

1.round() 函数是四舍五入用,第一个参数是我们要被操作的数据,第二个参数是设置我们四舍五入之后小数点后显示几位。 2.numeric 函数的2个参数,第一个表示数据长度,第二个参数表示小数点后位数。 例如: select   cast(round(12.5,2)   as   numeric(5,2))  结果:12.50 select   cast(round(12.555,2)   as   numeric(5,2))  结果:12.56 select   cast(round(122.5255,2)   as   numeric(5,2)) 结果:122.53 select   cast(round(1222.5255,2)   as   numeric(5,2)) 结果:报错了! 原因是:1222.5255,整数位是4,小数位是2,加起来4+2=6,超出了numeric设置的5位,所以为了保险,可以增减numeric的参数,例如numeric(20,2)。 此文系转载后作一调整,转载自:http://blog.csdn.net/caoyuanlang_11/article/details/5410833

龙生   26 Apr 2018
View Details

解决SQL Server 2008无法连接127.0.0.1的问题

电脑操作系统是Win10中文版,新装的英文版SQL Server 2008,纯默认安装,没有做任何改动。 装完SQL Server 2008之后,发现只能用默认的机器名来登录: 如果用127.0.0.1登录就会报出如下的错误: 在网上查询一番之后,发现让开启SQL Server Configuration Manager中的Named Pipes就可以解决问题,然而试了并没有什么卵用。。。 于是开始自己动手尝试解决方案,经过一番尝试,功夫不负有心人啊!终于算是找到了,下面把步骤贴出来: 第一步,开启TCP/IP。因为装完SQL之后这项协议默认是不开通的: 第二步,设置TCP/IP中属性的"IP ALL"的端口为1433。众所周知,SQL Server的默认端口为1433,只是不知道为何,默认安装却没有这一项。   然后,重启SQL服务就可以用127.0.0.1登录上了:   from:https://www.cnblogs.com/goldenbiu/p/4726463.html

龙生   20 Apr 2018
View Details

Centos6.8通过yum安装mysql5.7

1.安装mysql的yum源 a.下载配置mysql的yum源的rpm包     根据上面3张图片中的操作下载下来的rpm文件可以通过如下命令获取:

  b.安装用来配置mysql的yum源的rpm包

安装成功后在/etc/yum.repos.d/下会多出几个mysql的yum源的配置,如下:   2.安装mysql

  3.开启mysql服务

  mysql安装成功后创建的超级用户’root’@’localhost’的密码会被存储在/var/log/mysqld.log,可以使用如下命令查看密码

  使用mysql生成的'root’@’localhost’用户和密码登录数据库,并修改 其密码,具体命令

4.开启远程连接 设置iptables开放3306端口

  如果此时使用telnet远程登录mysql服务会出错:   解决此问题的方法为: 将localhost改成% 进入mysql的BIN目录  代码如下 mysql -u root -p mysql>use mysql; mysql>update user set host =’%’where user =’root’; mysql>flush privileges;   具体分析 1、在本机登入mysql后,更改“mysql”数据库里的“user”表里的“host”项,从”localhost”改为’%’。  代码如下 mysql> mysql>use mysql; mysql>select 'host' from user where user=’root';   #查看mysql库中的user表的host值(即可进行连接访问的主机/IP名称)      代码如下 mysql>update user set host = '%' where user =’root'; #修改host值(以通配符%的内容增加主机/IP地址,当然也可以直接增加某个特定IP地址,如果执行update语句时出现ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 错误,需要select host from […]

龙生   18 Apr 2018
View Details

设置redis访问密码

在服务器上,这里以linux服务器为例,为redis配置密码。 1.第一种方式 (当前这种linux配置redis密码的方法是一种临时的,如果redis重启之后密码就会失效,) (1)首先进入redis,如果没有开启redis则需要先开启: [root@iZ94jzcra1hZ bin]# redis-cli -p 6379 127.0.0.1:6379> (2)查看当前redis有没有设置密码: 127.0.0.1:6379> config get requirepass 1) "requirepass" 2) "" (3)为以上显示说明没有密码,那么现在来设置密码: 127.0.0.1:6379> config set requirepass abcdefg OK 127.0.0.1:6379> (4)再次查看当前redis就提示需要密码: 127.0.0.1:6379> config get requirepass (error) NOAUTH Authentication required. 127.0.0.1:6379> 2.第二种方式 (永久方式) 需要永久配置密码的话就去redis.conf的配置文件中找到requirepass这个参数,如下配置: 修改redis.conf配置文件 # requirepass foobared requirepass 123   指定密码123 保存后重启redis就可以了   连接redis 1.redis-cli连接redis [root@iZ2ze3zda3caeyx6pn7c5zZ bin]# redis-cli 127.0.0.1:6379> keys * (error) NOAUTH Authentication required. 127.0.0.1:6379> auth 123        //指定密码 OK 127.0.0.1:6379> keys * 1) "a" 2) "cit" 3) "clist" 4) "1" 127.0.0.1:6379>   2.Jedis连接redis java 代码方式 //连接redis服务器,192.168.0.100:6379 jedis = […]

龙生   11 Apr 2018
View Details

SQL优化的一些实用方法

1、任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。因为只有该字段中有null值,即使创建了索引其实也 是没有用的,所以创建索引应该在有值的字段上创建; 2、使用该sql语句将不会使用索引:select * from employee where last_name like ‘%cliton%'; 这样的话会使用索引:     select * from employee where last_name like ‘cliton%'; 3、Order by语句 ORDER BY语句决定了Oracle如何将返回的查询结果排序。Order by语句对要排序的列没有什么特别的限制,也可以将函数加入列中(象联接或 者附加等)。任何在Order by语句的非索引项或者有计算表达式都将降低查询速度。仔细检查order by语句以找出非索引项或者表达式,它们 会降低性能。解决这个问题的办法就是重写order by语句以使用索引,也可以为所使用的列建立另外一个索引,同时应绝对避免在order by 子句中使用表达式。 4、 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句 中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. 5、 SELECT子句中避免使用 ‘ * ‘: ORACLE在解析的过程中, 会将’*’ 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 6、 减少访问数据库的次数,能使用一条sql语句查询出来的最好使用一条语句直接查询出来。  整合简单,无关联的数据库访问: 如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系) 7、通过内部函数提高SQL效率.: 复杂的SQL往往牺牲了执行效率. 能够掌握上面的运用函数解决问题的方法在实际工作中是非常有意义的 8、 使用表的别名(Alias): 当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起 的语法错误. 9、 用EXISTS替代IN、用NOT EXISTS替代NOT IN: 在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的 效率. 在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个 全表遍历). 为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS. 例: […]

龙生   07 Apr 2018
View Details

解决 mariadb 在低配 VPS 上启动崩溃的问题

引言 最近博客又抽风了,打开主页后提示 Error Establishing a Database Connection。仔细想想,应该就是数据库服务器 mariadb 挂了;以前也遇到过类似的问题。经过分析日志,并结合网上的资料最终解决了问题。 日志 以下是 mariadb 服务器挂掉时的比较关键的日志信息,从下面的日志信息中,我们可以很容易地看出由于内存不足,从而导致数据库服务器启动时崩溃。

  解决 在使用 free -m 查看内存信息时,发现 swap 分区大小为 0。难怪说数据库服务器无法启动呢,在内存不够用的情况下,又无法使用 swap 分区,自然崩溃了。由于 VPS 使用了 SSD,性能自然不错。下面我们给服务器系统 CentOS 7 添加 1024M 的 swap 分区,采用的方法是创建一个 swap 文件: 使用下面的命令创建 swapfile:

使用下面的命令配置 swap 文件:

接下来,使用下面的命令立即启用 swapfile,这样就不用等到下次重启时自动启用:

最后,我们在 /etc/fstab 中添加下面一行,这样可以在系统下次重启时自动生效创建的 swapfile:

使用 cat /proc/swaps 或 free -m 查看 swapfile 的生效情况,如下图所示: 在完成上面的步骤后,我们还可以在 /etc/my.cnf 配置文件中添加一些配置信息,降低 mariadb 资源需求,具体的配置请参考文末给出的链接。 启动 启动 apache 服务器:systemctl start httpd.service; 启动 mariadb 服务器:systemctl start mariadb.service。 启动完成后,再次打开网站主页,bingo,问题解决了! 总结 低配 VPS 最好还是要多增加 swap 分区大小,尤其对于使用 SSD 的 VPS 而言,swap […]

龙生   17 Jan 2018
View Details

[MySQL]快速解决"is marked as crashed and should be repaired"故障

具体报错如下: Table '.\Tablename\posts' is marked as crashed and should be repaired 提示说论坛的帖子表posts被标记有问题,需要修复。我记得以前也出现过类似的问题,但是只要点击Phpmyadmin上的repair按纽就自动修复了,但是这次很绝,什么都没有.于是赶快上网查找原因。最终将问题解决。解决方法如下: 找到mysql的安装目录的bin/myisamchk工具,在命令行中输入: myisamchk -c -r ../data/tablename/posts.MYI 然后myisamchk 工具会帮助你恢复数据表的索引。好象也不用重新启动mysql,问题就解决了。 问题分析: 1、 错误产生原因,有网友说是频繁查询和更新dede_archives表造成的索引错误,因为我的页面没有静态生成,而是动态页面,因此比较同意这种说法。 还有说法为是MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性的断电、在提在数据库表提供服务时对表的原文件进行某种操作都有可能导致 MYSQL数据库表被损坏而无法读取数据。总之就是因为某些不可测的问题造成表的损坏。 2、问题解决办法。 当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次--这通常是上一次修复操作遗留下来的。 这三种修复方法如下所示: % myisamchk --recover --quick /path/to/tblName % myisamchk --recover /path/to/tblName % myisamchk --safe-recover /path/to/tblName 第一种是最快的,用来修复最普通的问题;而最后一种是最慢的,用来修复一些其它方法所不能修复的问题。 检查和修复MySQL数据文件 如果上面的方法无法修复一个被损坏的表,在你放弃之前,你还可以试试下面这两个技巧: 如 果你怀疑表的索引文件(*.MYI)发生了不可修复的错误,甚至是丢失了这个文件,你可以使用数据文件(*.MYD)和数据格式文件(*.frm)重新生 成它。首先制作一个数据文件(tblName.MYD)的拷贝。重启你的MySQL服务并连接到这个服务上,使用下面的命令删除表的内容: mysql> DELETE FROM tblName; 在 删除表的内容的同时,会建立一个新的索引文件。退出登录并重新关闭服务,然后用你刚才保存的数据文件(tblName.MYD)覆盖新的(空)数据文件。 最后,使用myisamchk执行标准的修复(上面的第二种方法),根据表的数据的内容和表的格式文件重新生成索引数据。 如果你的表的 格式文件(tblName.frm)丢失了或者是发生了不可修复的错误,但是你清楚如何使用相应的CREATE TABLE语句来重新生成这张表,你可以重新生成一个新的.frm文件并和你的数据文件和索引文件(如果索引文件有问题,使用上面的方法重建一个新的)一 起使用。首先制作一个数据和索引文件的拷贝,然后删除原来的文件(删除数据目录下有关这个表的所有记录)。 启动MySQL服务并使用当初的CREATE TABLE文件建立一个新的表。新的.frm文件应该可以正常工作了,但是最好你还是执行一下标准的修复(上面的第二种方法)。     为了不冒失修复,故采取保守做法,我们知道 MySQL 一个高效的管理工具便是 PhpMyAdmin,而在该管理软件中就包含了对表的检查、分析、修复、优化功能,比起网上提供的含糊命令行来说更安全更简便。 通过实践,在使用检查表功能后确实发现了问题,之后使用修复功能进行了修复,反馈结果每个表都已经 ok,再执行一次优化,重新测试访问网站终于恢复了正常。一场灾难就此避免…… from:https://www.cnblogs.com/hakuci/archive/2012/03/20/2407723.html

龙生   16 Jan 2018
View Details

修改mysql用户密码

目录 mysqladmin命令 UPDATE user 语句 SET PASSWORD 语句 root密码丢失的情况(待验证) mysqladmin命令(回目录) 格式如下(其中,USER为用户名,PASSWORD为新密码): mysqladmin -u USER -p password PASSWORD 该命令之后会提示输入原密码,输入正确后即可修改。 例如,设置root用户的密码为123456,则 mysqladmin -u root -p password 123456 UPDATE user 语句(回目录) 这种方式必须是先用root帐户登入mysql,然后执行: UPDATE user SET password=PASSWORD('123456′) WHERE user=’root'; FLUSH PRIVILEGES; SET PASSWORD 语句(回目录) 这种方式也需要先用root命令登入mysql,然后执行: SET PASSWORD FOR root=PASSWORD('123456'); root密码丢失的情况(回目录) 使用 MySQL 自带的一个工具"MySQL GUI Tools",我一直用的是5.0版本的。 在安装目录中运行一个程序 MySQLSystemTrayMonitor.exe,运行完后在系统托盘会出现图标。如果MySQL服务尚未安装,则不会出现,可先通过Action>Manage MySQL Instances 先配置和安装服务。如果已经安装服务,鼠标右键点击后,会出现"Configure Instance"的菜单。点击后出现如下MySQL Administrator窗口: 假如原来的服务配置都正常的情况下,选中左侧列表中的“启动变量”,并在相应的右侧标签中选择“安全”,勾选“禁用grant表”,然后“应用更改”。 并回到左侧的“服务器控制”,和右侧相应的“开始/停止服务”标签,点击启动服务。此时,连接mysql已经不需要用户名和密码了,你可以修改root密码。   from:https://www.cnblogs.com/jyginger/archive/2011/04/27/2030017.html

龙生   13 Jan 2018
View Details

CentOS6.5搭建LNMP

1:查看环境: 1 2 [root@10-4-14-168 html]# cat /etc/redhat-release CentOS release 6.5 (Final) 2:关掉防火墙 1 [root@10-4-14-168 html]# chkconfig iptables off 3:配置CentOS 6.0 第三方yum源(CentOS默认的标准源里没有nginx软件包) 1 #wget http://www.atomicorp.com/installers/atomic 1 #sh ./atomic 1 #yum check-update 4:安装开发包和库文件  1 2 3 4 #yum -y install ntp make openssl openssl-devel pcre pcre-devel libpng libpng-devel libjpeg-6b libjpeg-devel-6b freetype freetype-devel gd gd-devel zlib zlib-devel gcc gcc-c++ libXpm libXpm-devel ncurses ncurses-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel imake autoconf automake screen sysstat compat-libstdc++-33 curl curl-devel 5:卸载已安装的apache、mysql、php 1 2 3 # yum remove httpd # yum remove mysql # yum remove php 6:安装nginx 1 […]

龙生   13 Jan 2018
View Details

mysql 查询表死锁 和结束死锁的表步骤

http://blog.sina.com.cn/s/blog_66519bd80102v3ct.html 1、查询是否锁表 show OPEN TABLES where In_use > 0;   2、查询进程 show processlist 查询到相对应的进程===然后 kill    id   补充: 查看正在锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;   查看等待锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;   from:http://blog.csdn.net/chruan/article/details/51955775

龙生   10 Jan 2018
View Details
1 11 12 13 40