有关各种数据库知识及学习心得
在导入的时候,用phpMyAdmin去导入30多M左右的mysql数据库文件时出错:

您可能正在上传很大的文件,请参考文档来寻找解决方法。

1.很明显,是文件太大,无法导入。即上传文件大小有限制。所以要去解除此限制。

2.其实这个很简单的只要更改php.ini里三个配置即可。(见下面加粗部分,改成你自己的需求即可)

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
;upload_max_filesize = 2M
upload_max_filesize = 300M

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
;memory_limit = 128M
memory_limit = 300M

; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
;post_max_size = 8M
post_max_size = 300M

刷新一下phpMyAdmin,重新导入试试,结果还是不行。

很多朋友们肯定也是很是纳闷,春哥在此提醒大家,改完以后,一定要记得重启服务。

还有,一定是3个都得相应的修改,否则不成功。
SET类型
SET是一个字符串对象,可以有零或多个值,其值来自表创建时规定的允许的一列值。指定包括多个SET成员的SET列值时各成员之间用逗号(‘,’)间隔开。所以SET成员值本身不能包含逗号。

例如,指定为SET('one', 'two') NOT NULL的列可以有下面的任何值:

''
'one'
'two'
'one,two'
SET最多可以有64个不同的成员。

当创建表时,SET成员值的尾部空格将自动被删除。

环境:linux,mysql5.5.21

错误:Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

原因:

  同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;

解决方法:

1、提高允许的max_connection_errors数量(治标不治本):

  ① 进入Mysql数据库查看max_connection_errors: show variables like '%max_connection_errors%';

    ② 修改max_connection_errors的数量为1000: set global max_connect_errors = 1000;

  ③ 查看是否修改成功:show variables like '%max_connection_errors%';

2、使用mysqladmin flush-hosts 命令清理一下hosts文件(不知道mysqladmin在哪个目录下可以使用命令查找:whereis mysqladmin);

  ① 在查找到的目录下使用命令修改:/usr/bin/mysqladmin flush-hosts -h192.168.1.1 -P3308 -uroot -prootpwd;

  备注:

    其中端口号,用户名,密码都可以根据需要来添加和修改;

    配置有master/slave主从数据库的要把主库和从库都修改一遍的(我就吃了这个亏明明很容易的几条命令结果折腾了大半天);

    第二步也可以在数据库中进行,命令如下:flush hosts;

1、判断数据库是否存在

if exists (select * from sys.databases where name = '数据库名')  
 drop database [数据库名]  

2、判断表是否存在

if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)  
   drop table [表名]  

3、判断存储过程是否存在

if exists (select * from sysobjects where id = object_id(N'[存储过程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)  
   drop procedure [存储过程名]  

4、判断临时表是否存在

if object_id('tempdb..#临时表名') is not null    
   drop table #临时表名  
Tags:
在MS-SQLServer中,如何在不同的数据库之间复制表?
当表目标表存在时:
insert into 目的数据库..表(字段1...字段n) select  段1...字段n  from 源数据库..表

当目标表不存在时:
select 段1...字段n  into 目的数据库..表 from 源数据库..表
--如果在不同的SQL之间:
insert into openrowset('sqloledb','目的服务器名';'sa';'',目的数据库.dbo.表)
select * from 源数据库..表

除了上面的方法之外或者还可以用链接服务器:
         问题:Oracle的服务“OracleoraHome92Agent ”启动不了,在控制面板-服务里面启动的时候说"本地计算机上的OracleOraHome92Agent服务启动后又停止了",一些服务自动停止,如果他们没什么可做的,例如“性能日志和警报服务”".

怎么解决?

原因:出现这种错误一般是由于在装好Oracle92之后,更改计算机名造成的。

解决方法:

   方法1、将计算机名改回到安装Oracle92时的名称。

   方法2、%ORACLE_HOME%/network/agent目录下,删除所有*.q文件,删除services.ora文件,重启Agent服务;OracleOraHome92TNSListener服务可以启动,但其它服务有可能会自动被停止,还必须到%ORACLE_HOME%/network/admin目录下找到listener.oratnsnames.ora两个文件并打开,将其中的计算机名改成现在的计算机名再重启OracleOraHome92TNSListener服务即可。
Tags:
         记得前段时间,好几次面试都有问到我这个问题,也就是怎么查询数据库中重复的数据呢,并且还需要把重复数据据替换掉,现在做个笔记方便自己以后复习和查找,也给大家分享供大家参考下。
一、在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句:
select data_guid from adam_entity_datas a where a.rowid > (select min(b.rowid) from adam_entity_datas b where b.data_guid = a.data_guid)
如果表中有大量数据,但是重复数据比较少,那么可以用下面的语句提高效率
select data_guid from adam_entity_datas where data_guid in (select data_guid from adam_entity_datas group by data_guid having count(*) > 1)
此方法查询出所有重复记录了,也就是说,只要是重复的就选出来,下面的语句也许更高效
select data_guid from adam_entity_datas where rowid in (select rid from (select rowid rid,row_number()over(partition by data_guid order by rowid) m from adam_entity_datas) where m <> 1)
目前只知道这三种比较有效的方法。

第一种方法比较好理解,但是最慢,第二种方法最快,但是选出来的记录是所有重复的记录,而不是一个重复记录的列表,第三种方法,我认为最好。
         Heck有一段时间没用Oracle了,最近Heck发现Oracle9i企业管理器没有了, 我用的是oracle9i,不知为何企业管理器(Enterprise Manager Console)没有了,(注:原来一直有的,可用的)。那么我们要如何恢复呢?

用Universal Installer修复安装不行,重新修复安装下oracle对应版本的客户端;安装时按提示选择修复,看看,不行就卸载重新装(前提:将重要数据导出安全地方去),找到oem启动的bat就可以了~

执行x:\oracle\ora92\bin\oemapp.bat console 就OK了,或者说把 oemapp.bat 文件发送快捷方式到桌面然后在把路径改为x:\oracle\ora92\bin\oemapp.bat console就OK了。

oracle9i或者10g企业管理器(Enterprise Manager Console)丢失的原因,一般是快捷方式被360弄没了,建一个.bat的文件,9i输入
x:\oracle\product\10.2.0\client_2\bin\oemapp.bat console,10g输入 x:\oracle\ora92\bin\oemapp.bat console,地址按你的地址来,点击试试,以上方法9i和10g有效,前提只是快捷方式被360弄了,而原文件还在的,而关键还把Heck机器上的oemapp.bat弄没了,真是晕。我得去哪个哥们机器上拷个去。

很多人都遇到过这个问题,猪头的是9i的,不过猪头的x:\oracle\ora92\bin\oemapp.bat 这个文件还在,所以问题不大。
先看以下有没有

如果路径不见了:

1.看是否将计算机的名字给改了
2.如果没有改 在dos 环境下运行 lsnrctl start

原因:
Windows优化大师将Oracle的监听服务给优化了
还有一种造成本地oracle无法启动的原因是安装时的主机名与当前主机名不同,也就是说安装完oracle后
更改了主机名造成。

解决办法1;
打开注册表(regedit)找到  
HKEY_LOCAL_MACHINE/SYSTEM/CurrentContorlSet/Services/OracleOraHome92TNSListener找到后单击,
在右侧里面单击右键,新建一个(可扩充字符串值) 起名字为 ImagePath 在 数值数据 中写入
C:\oracle\ora92\BIN\TNSLSNR 后退出注册表, 重新启动即可。(其中 C:\oracle\ora92\BIN\TNSLSNR 是你oracle安装目录中的一个.exe文件。
数据库服务器字符集更改步骤
问题描述:
在客户端插入字符“咪咪”,从数据库中查询显示时出现乱码

处理步骤:
1.对数据库做全库导出,备份全库数据,以防故障发生
首先设定客户端的字符集,必须以ZHS16GBK的字符集导出,然后才能在更改失败后顺利倒入新建的库。
#setenv NLS_LANG "SIMPLIFIED CHINESE_CHINA.ZHS16GBK";
#stty -istrip -parity cs8;
#setenv LANG zh
拟在/sybdata(磁盘阵列)下建立一个目录orabak,用于存放dmp文件。
#mkdir /sybdata/orabak
#chown oracle:oinstall /sybdata/orabak
#su – oracle
#cd /sybdata/orabak
%exp system/manager@hnsdh file=hnsdh_2010-8-17 log=hnsdh_exp_2010-8-17 full=y
(此处命名为示例,以实施当日日期为准)
察看日志结尾,以判定导出是否成功。
#cat hnsdh_2010-8-17.dmp | od -x | head
看第二和第三个字节组成的十六进制数是多少可判断导出文件的字符集。
分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]