首页 > 学技术 > 技术网文 > MySQL > 正文

[保留] 请问MySQL在Linux与Windows系统上有什么差别啊?


来源 chinaunix.net 酷勤网整理

指点一点算一点,请帮忙啊



 bjchenxu 回复于:2004-04-27 18:18:51

系统底层的实现是有平台相关的

但是对于用户来说,几乎感受不到差异,都可以用windows上的ems mysql manager管理


 bjkider 回复于:2004-04-28 10:12:30

谢谢这位大哥,真的感谢

我想知道具体一些差别,和我们应该注意的一些问题,见笑。


 bjchenxu 回复于:2004-04-28 11:12:55

为了这个问题,我翻了一下manual,发现使用方便确实没有什么问题

安装和配置的时候,有些问题需要注意吧,摘录手册中的一段

4.12.6 MySQL-Win32与Unix MySQL比较
MySQL- Win32现在已经证明了自己很稳定。这个版本得MySQL有与对应的Unix版本同样的特征,除了下面: 

Win95和线程 
Win95 为每个线程的创建损失大约200个字节的内存。因此,如果你进行许多连接,你不应该在Win95运行mysqld很长时间,因为MySQL的每个连接都创建一个新线程!WinNT和Win98不能容忍这个bug。 
阻塞式读(blocking read) 
MySQL为每个连接使用一个阻塞式读取,这意味着: 
一个连接将不在8个小时后自动被断开,就像MySQL的Unix版本所发生的。 
如果一个连接“挂起”,不杀死MySQL就不可能打破它。 
mysqladmin kill在一个睡眠的连接上将不工作。 
只要有睡眠的连接,mysqladmin shutdown不能中途中断。 
我们计划在不久的将来修正它。 

UDF函数 
暂时MySQL-Win32不支持用户可定义函数。 
DROP DATABASE 
你不能抛弃一个正在被某些线程使用的数据库。 
从任务管理器杀死MySQL 
在Windows95上,你不能从任务管理器或用shutdown实用程序杀死MySQL。你必须用mysqladmin shutdown关闭它。 
大小写区分的名字 
文件名在Win32上是忽略大小写的,因此Win32上的MySQL数据库和表的名字也是忽略大小写的。唯一的限制是数据库和表的名字必须在整个一个给定的语句中大小写是一样的,因为它用my_table和MY_TABLE都指向同一个表子,下列查询将不工作: 
SELECT * FROM my_table WHERE MY_TABLE.col=1; 

“ \ ”目录字符 
在Win95上的路径名组成由“\”字符分隔,它在MySQL中也是转义字符。如果你正在使用LOAD DATA INFILE或SELECT ... INTO OUTFILE,你必须用两个“\”字符或使用Unix风格的文件名“/”字符: 
LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
SELECT * FROM skr INTO OUTFILE 'C:/tmp/skr.txt';

Can't open named pipe错误 
如果你使用NT上的MySQL-Win32共享软件版本,用最新的mysql客户,你将得到下列错误: 
error 2017: can't open named pipe to host: . pipe...

这是因为NT上MySQL正式版本缺省地使用命名管道。你能通过为新MySQL客户使用--host=localhost选项或创建一个包含下列信息的文件“C:\my.cnf”来避免这个错误: 

[client]
host = localhost

Access denied for user错误 
在访问在同一机器上的一个MySQL服务器时,如果你得到Access denied for user: 'some-user@unknown' to database 'mysql'的错误,这意味着MySQL不能正确解释你的主机名。为了修正它,你应该创建一个文件“\windows\hosts”,有下列信息: 
127.0.0.1  localhost
对于可能想要帮助我们做好Win32版本的任何人,这里有的一些开放的问题: 

制作一个单用户MYSQL.DLL服务器。这应该包括一个标准MySQL服务器的一切,除了线程创建外。这将使MySQL在不需要一个真正的客户机/服务器和不需要从其他主机存取服务器的应用程序时更容易使用。 
为MySQL安装增加一些漂亮的“start”和“shutdown”图标。 
为MySQL启动选项创建造一个工具管理注册表条目。注册表条目的度缺已经被编码进mysqld.cc,但是它应该重新编码而更加面向“参数”,该工具应该也能更新“ \my.cnf”文件,如果用户比较喜欢使用它而不是注册表。 
当用--install登记mysqld作为一种服务(在 NT 上 )时,如果你也可以在命令行上增加缺省选项,它将更好,目前解决办法是更新“C:\my.cnf”文件。 
当你挂起一个运行Win95的膝上计算机时,当膝上计算机被恢复时,mysqld守护程序不接受新连接。我们不知道这是否 Win95、TCP/IP或MySQL的问题。 
能从任务管理器杀死mysqld将绝对是好事,目前,你必须使用mysqladmin shutdown。 
移植用在 mysql命令行工具的readline到Win32。 
标准的GUI版本MySQL客户(mysql、mysqlshow、mysqladmin和mysqldump) 将更好。 
如果在“net.c”中的套接字“读”和“写”函数是可中断的,那将更好。这将有可能在Win32上用mysqladmin kill杀死打开的线程。 
制作有关哪些Windows程序能工作在MySQL-Win32/MyODBC和必须做什么在能让他们工作的文档。 
mysqld总是在“C”处启动而不在缺省地点,我们想让mysqld使用当前地点用于排序顺序。 
移植sqlclient到Win32(几乎完成)并加入更多的特征! 
把更多的选项加到Mysql Manager。 
在服务器和客户之间改变通讯协议,使用Windows内部通讯而不是套接字和TCP/IP。 
用.DLL实现UDF函数。 
增加宏以使用由Win32提供的更快的对线程安全的增加/减少方法。 
其他Win32特定问题在MySQL-Win32分发的“README”文件中描述。


 yyt98032 回复于:2004-07-01 10:59:11

我用的是mysql-4.0.15-win,用localhost不需要用户名和密码就可以连接数据库,但是如果服务器名用机器名和ip地址,即使你正确的输入了用户名和密码也不行,我用的是jdbc的type4去连的,
提示错误如下:
Access denied for user: 'test@dell_ww' (Using password: YES)


 ama-zheng 回复于:2004-07-09 13:31:35

引用:原帖由 "yyt98032" 发表:
我用的是mysql-4.0.15-win,用localhost不需要用户名和密码就可以连接数据库,但是如果服务器名用机器名和ip地址,即使你正确的输入了用户名和密码也不行,我用的是jdbc的type4去连的,
提示错误如下:
Access den..........



我在配置数据源时,只能使用自己机器上的数据库,不能用其它机器上的,那位高手可以帮我个忙啊? 


参考: 
http://www.vckbase.com/document/viewdoc/?id=339


我遇到的问题和楼上的大哥遇到的很相似,哪位大侠能帮个忙啊?


 ama-zheng 回复于:2004-07-09 13:59:45

急,有碰到过类似问题的朋友吗?


 ayouxxx 回复于:2004-07-15 12:50:46

win的mysql不支持char型


 玉面飞龙 回复于:2004-07-19 11:01:57

关于mysql在 linux 和 unix 的表明成大小写问题

mysql 在linux 下 使用java 开发; 当 java中使用 select * from app_backapp的时候 提示 表app_backapp不存在;而mysql库中存在app_BackApp;

但是直接在mysql的命令行中执行 确发现它对表名称不不是都敏感 如


mysql>; select *from app_backapp;
+------------+
| run        |
+------------+
| 2004-07-19 |
+------------+
1 row in set (0.00 sec)

mysql>; select *from app_BackApp;
+------------+
| run        |
+------------+
| 2004-07-19 |
+------------+
1 row in set (0.00 sec)


如上没有问题,如下确有问题

mysql>; select *from app_DMDetailQueue;
ERROR 1146: Table 'FounderDAM30.app_DMDetailQueue' doesn't exist
mysql>; select *from App_DMDetailQueue;
Empty set (0.00 sec)




  如果在开发中要注意 表,列 等的大小写铭感问题,开发的成本也太高了


 ※花短裤※ 回复于:2004-08-08 21:29:06

不要看长篇大论的。很简单:
Linux下支持多线程。Windows下是单线程!


 晓梦蝴蝶 回复于:2004-08-20 13:00:46

 不会吧.呵呵.windows怎么就不是多线趁的呢!
 


 leaway 回复于:2004-08-28 01:56:05

win95,win98不支持多线程,只是多进程。
而其他NT,2000,XP,2003都支持多线程。


 jxncligang 回复于:2004-09-01 09:34:16

Win版是否會有過期的情況


 小猴儿 回复于:2006-03-28 07:07:23

引用:原帖由 ※花短裤※ 于 2004-8-8 21:29 发表
不要看长篇大论的。很简单:
Linux下支持多线程。Windows下是单线程! 


:mrgreen:




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=314148

收藏到: