MYSQL总结 -- 随笔
//allow zero datetime=true导致datetime转换失败:MySql.Data.Types.MySqlDateTime”的对象无法转换为类型“System.Nullable`1[System.DateTime]
做反射转换时遇到该问题
mysql连接字符串去掉allow zero
datetime=true,否则返回的日期会是MySql.Data.Types.MySqlDateTime类型,而不是DataTime
//////查询返回结果空时间错误
数据库连接字符串中增加
allow zero datetime=true;
//////休眠连接过多,有可能导致“Too many
connections”的错误
查看所有连接 show
processlist
设置休眠连接超时时间60秒:
my.ini中mysqld节中添加
wait-timeout=60
//////显示创建表的sql语句
show create table 表名
//////显示行号
set @intIndex = 0;
select (@intIndex := @
intIndex + 1) as RowNum ,* from table;
//////设置字符集
set names 'utf8';
//////.Net调用Mysql存储过程 参数过大或过小
存储过程参数中 varchar
(1024) 中间的空格不能有,否则.net的dll无法判断。
//////MySQL数据库innoDB数据分开存储
MySQL数据默认存储在ibdata1文件中。
如果要每张表使用单独的innoDB文件,修改my.ini文件,增加下面配置innodb_file_per_table
然后重启服务
//////Incorrect string value:
有可能是字符串长度不够了
Incorrect string value:
'\xE5\xBE\x97\xE4\xBB\xB7...' for column 'Content' at row
1.字符集全部调整为utf8。
2.超出字符串长度。
各字段类型长度
text 2^16-1
mediumtext
2^16-1
longtext 2^32-1
//////Mysql字符串数据插入转义处理
"\"替换为"\\""'"替换为"''"
定义变量
DECLARE TMP INT 定义局部变量 作用域begin 到 end 语句块之间
SET @TMP = 1 定义用户变量
SET @@TMP = 1 定义全局
存储过程/函数
//执行字符串存储过程
DECLARE STRING_SQL LONGTEXT;
SET @TMP = STRING_SQL
PREPARE S1 FROM @TMP
EXECUTE S1;
DEALLOCATE PREPARE S1;
调用:EXECUTE PORC_XX PARM1,PARM2;
创建MYSQL服务
"{mysql目录}/mysqld" --install Service_Name --defaults-file="{mysql目录}\my.ini"
创建数据库备份
mysqldump --quick --host=127.0.0.1 --default-character-set=gbk --lock-tables -R --verbose -- force --port=3307 --user=root --password=root dbName -r "backup_path"
还原数据库
mysql --host=127.0.0.1 --default-character-set=gbk --port=3307 --user=root --password=root dbName<"backup_path"
检测端口号
netstat -ano
netstat -ano|findstr 3307