LJMM平台( Linux +Jexus+MySQL+mono) 上使用MySQL的简单总结
近准备把PDF.NET框架的开源项目“超市管理系统”移植到Linux上跑(演示地址:http://221.123.142.196),使用Jexus服务器和MySQL数据库,相对使用SQLite而言,用MySQL问题比较多,但最后还是一一解决了,先总结如下:
1,MySQL驱动:
有人说在mono 下跑MySQL需要老点的MySQL驱动,我实验发现跟此无关,我用的驱动 MySQL.Data.dll 版本是 6.3.6,在mono 3.0.3 下跑是没有问题的。
2,MySQL服务的版本:
这个有点关系,我测试了2个MySQL服务版本,一个5.0.95,一个是 5.5.28 ,前者出错的时候,换到后者的数据库又发现没有问题了,看来版本高点好。
3,MySQL的编码问题:
为了使用中文,数据库所有语言设置都成UTF-8,或者在连接字符串设置编码(CharSet=utf8) :
--------- server=ip;User Id=uid;password=pwd;CharSet=utf8;DataBase=SuperMarket;Allow Zero Datetime=True ----------
4,MySQL日期字段类型:
其实这个问题跟网站的“语言文化设置”有关,在拼接SQL的时候,直接DateTime.ToString() 的时候会有不同的格式,而MySQL的语言文化设置跟网站不一样,即会出问题。
另外,有时日期字段只保存了日期部分,没有保存时间部分,或者时间日期字段为空,会导致查询错误,
比如网站语言文化设置是 en-US,那么日期变量在SQL拼接的时候是这个样子的: '2013-3-2 10:10:1 AM' ,插入数据的时候不会报错,但MySQL无法查询出来,查询报错,这时候可以在连接字符串中增加“Allow Zero Datetime=True”设置,这样查询不报错了,但是日期字段的值也是空了。
最佳解决方案是使用Ado.net 的参数化查询。 PS:PDF.NET框架的OQL,数据控件都是参数化查询的。
5,Web.config文件有关语言文化的设置:
由于mono 3.0.x 目前还不是正式版本,所以它的ASP.NET中语言文化只支持 en-US,而通常情况下默认的是当前系统的语言文化设置,比如zn-CH,但框架又不支持,于是MySQL无法获知当前要使用的设置,报错。 具体设置方法是设置 uiCulture=“en-US”,在
<system.web>
<globalization culture="zh-CN" uiCulture="en-US"/>
... ...
</system.web>
或者另外一个方案,就是使用当前稳定版本的 mono 2.10.8
6,MySQL数据管理:
可以使用Apache的PhpAdmin来管理MySQL,但还得装apache 的PHP运行时,这里推荐一款CS方式的数据库管理软件,PDF.NET集成开发工具,很方便管理MySQL的,可以执行建库等操作。
(该工具下载地址:http://ft.codeplex.com/releases/view/65308 )
------------------------------------------------------------------
PS:为了移植到MySQL,感谢Jexus服务器作者“宇内流云”和网友“斌”的大力支持,在他们的帮助下我才成功!
- 利用Linq对集合元素合并、去重复处理
- 上高速就开启自动驾驶,但出车祸了!自动驾驶真不敢用哦!
- Gof设计模式之建造者模式(二)
- 数字化随笔-演进AI
- 有料 | 无人驾驶登机桥首次在深圳试行
- java学习:eclipse + Weblogic 12c + svn 集成开发环境搭建
- Docker容器学习梳理--容器登陆方法梳理(attach、exec、nsenter)
- java学习:调用 java web service
- java学习:数据增删改查、存储过程调用及事务处理
- 极客手工:自制51四驱无线遥控小车
- flash:二次贝塞尔曲线应用-生成飞机路径示意图
- 微信小程序重磅功能上线!一键连Wi-Fi/手机变门禁卡
- MySQL下载安装、基本配置、问题处理
- windows下命令行模式中cd命令无效的原因
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【JS】676- 1.1w字 | 初中级前端 JavaScript 自测清单 - 2
- matplotlib基础绘图命令之imshow
- 聊聊dubbo-go的broadcastCluster
- 爬取博客园文章
- 配置Python开发环境
- 部署Python应用
- 重写ThreadPoolTaskExecutor
- 聊聊dubbo-go的forkingCluster
- 创建多线程的4种方式
- 线程通讯wait¬ify
- 最新深度学习框架——OneFlow:新分布式训练(附源代码)
- 多线程相关概念
- MySQL安装教程
- MapReduce之自定义OutputFormat
- 在TensorFlow中使用模型剪枝将机器学习模型变得更小