mysql笔记

1. root登录不了:Access denied for user ''@'localhost' to database 'mysql'

mysql进入安全模式:   mysqld -nt --skip-grant-tables;
在另一个dos窗口用空密码登陆mysql,把user表中的匿名用户删除
注:这种方法试过一次后第二次死活进不去,算了,还是卸载重装吧。。。

2.innodb_buffer_pool_size 

如 果用Innodb,那么这是一个重要变量。相对于MyISAM来说,Innodb对于buffer size更敏感。MySIAM可能对于大数据量使用默认的key_buffer_size也还好,但Innodb在大数据量时用默认值就感觉在爬了。 Innodb的缓冲池会缓存数据和索引,所以不需要给系统的缓存留空间,如果只用Innodb,可以把这个值设为内存的70%-80%。和 key_buffer相同,如果数据量比较小也不怎么增加,那么不要把这个值设太高也可以提高内存的使用率。

innodb_additional_pool_size
这个的效果不是很明显,至少是当操作系统能合理分配内存时。但你可能仍需要设成20M或更多一点以看Innodb会分配多少内存做其他用途。

innodb_log_file_size
对于写很多尤其是大数据量时非常重要。要注意,大的文件提供更高的性能,但数据库恢复时会用更多的时间。我一般用64M-512M,具体取决于服务器的空间。

innodb_log_buffer_size
默认值对于多数中等写操作和事务短的运用都是可以的。如 果经常做更新或者使用了很多blob数据,应该增大这个值。但太大了也是浪费内存,因为1秒钟总会 flush(这个词的中文怎么说呢?)一次,所以不需要设到超过1秒的需求。8M-16M一般应该够了。小的运用可以设更小一点。

innodb_flush_log_at_trx_commit (这个很管用)
抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据。 

3.windows无法启动mysql服务 错误1067

一般是你修改了你的配置文件导致无法启动,修改一下就好了

4.乱码问题:

cmd下登陆mysql,执行命令:show variables like "%character%";可以得到以下的表

mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

把除了filesystem那个之外的全部改成utf-8,命令是

set character_set_client = utf8; 

set character_set_connection = utf8;

set character_set_database = utf8;

set character_set_server = utf8;

set character_set_results=utf8;

当然,修改了这个未必就解决了乱码问题,

页面的编码还有你数据库的编码还有你数据库中字段的编码等等,最好都改成统一的

注:我发现用上面的方法改了以后只要重启了mysql服务那么上面的配置就都失效了,所以正宗的方法还是得在my.ini中改,在[mysqld]下加上一句character_set_server=utf8, 注意不是default-character-set=utf8,这个在mysql5.5版本中已经不适用了,但是这样子只影响了server和database两个值,其他的我怎么改都改不了,有大神知道的话请不吝赐教!

5.mysql的data目录下的数据库的文件夹只存放了表的结构,而表的数据是存放在ibdata1这个文件中的(同一个目录)

 

6.从表中获取随机一行或几行:在sql语句后面加order by rand() limit somenumber

7.timestamp最大时间2038-01-19 03:14:07

8.mysql不支持check,而且MySQL 不象其它有些数据库可以在触发器中抛出异常来中断当前触发器的执行以阻止相应的SQL语句的执行。在MySQL的目录版本中还无法直接抛出异常。一种实现的方法就是想办法在触发器中利用一个出错的语句来中断代码的执行。下面是自己写的一个函数和触发器,一开始这个错误的语句是用drop table sdfdfs,但是报错了#1422 - Explicit or implicit commit is not allowed in stored function or trigger.在触发器中不能有commit;rollback;这种事务语句,但是我这一句也没错误啊,后来换成了insert就好了

 

DELIMITER $$

create function fun(entrustproductId varchar(25), _orderId varchar(25))

returns INT 

       

begin

declare value int;

if exists(select COUNT(*) from entrustproduct as e,_order as o

where e.id=entrustproductId and o.id=_orderId and

e.entrustId = o.entrustId)

                then

                set value=1;

                  else

                    set value = 0;

                  end if;

return value;

End $$

 

delimiter |

create trigger waybilltrigger before insert on waybill  for each row 

begin 

declare x int;

set x = fun(NEW.entrustproductId,NEW.orderId);

if(x=0)

then

  insert into dfasdf values (1,2);

  end if;

end |

 

9.mysqldump -u root -pscutscut  wlw > c:\a.sql   导出数据库数据

10.设置级联的时候如果修改父键的类型子键是不会改的

11.Error:BLOB/TEXT column 'product' used in key specification without a key length,原因是:
Mysql数据库对于BLOB/TEXT这样类型的数据结构只能索引前N个字符。所以这样的数据类型不能作为主键,也不能是UNIQUE的。所以要换成 VARCH,但是VARCHAR类型的大小也不能大于255,当VARCHAR类型的字段大小如果大于255的时候也会转换成小的TEXT来处理。所以也 同样有问题。
 
12. CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name) 
CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。   
这个类型 可以是以下值其中的 一个:    
BINARY[(N)]  
CHAR[(N)]  
DATE  
DATETIME 
DECIMAL  
SIGNED [INTEGER]  
TIME  
UNSIGNED [INTEGER] 

转载于:https://www.cnblogs.com/wolfplan/p/5051203.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值