我在前面的帖子中提到,我向 Firebird 开发者提出了 bug 报告(关于Firebird 数据库文件不能放置在含有中文等字符的路径中的 bug)。后来我又在 Firebird 2.0 的 Request 列表中添加了在新的版本中修复此 bug 的请求,列表管理员再次删除(前一次删除是因为bug报告重复,情有可缘)了我的请求,并告诉我:
http://sourceforge.net/tracker/index.php?func=detail&aid=1186455&group_id=9028&atid=593943
With respect to your question; Yes, the item was logged over
a year ago and no progress has been made -- this is the life
of software project (open or closed source). A quick review of
other entries will show that other cases exist which are much
older. Software development is a process which involves
trade-offs; time vs. most important changes -- not everything
can be fixed! (时间 vs 重要性 —— 不是所有bug都会被修复)
As to your specific problem; there are no plans for this case
to be fixed for the v2.0 release.
There is a simple workaround, which is available -- don't use
MBCS characters in the database name or folder. It is not
the best answer, but it does work.
大意就是,这个问题现在还没有列到日程上,在2.0版本中他们不会修复这个bug。
真是个傲慢的西方人啊!他不会明白,如果对中文支持不好,我们怎敢真的在产品中使用这东西呢?
请大家好自为之,慎重采用 Firebird DB,开发者没有计划修复这个对我们来说非常严重的 bug。
--
2005-11-1附:下面有不少朋友都在说,不支持中文路径对编程没有任何影响,我说两句:
想必各位都是开发服务端程序(比如Web程序)的,在服务器端,当然是可以避免中文路径。但我的情况是作客户端的程序,用 Embeded 版本的 Firebird 存储一些数据,要把程序安装到最终用户的机器中使用,用户使用时很有可能选择一些含有中文路径的目录,这些都是不可预料的,所以支持中文路径非常必要。
打印 | 张贴于 2005-04-21 16:51:00 | Tag:暂无标签
留言反馈
LZ太把自己当回事情了!!!!
没人要你用firebird, 你用DB2 MS-SQL 。。。
时间 vs 重要性 ,人家不是告诉你了吗!
木看到个 傲慢的西方人,到看到个傲慢的中国人。。。 以为自己是 上帝啊?
而Firebird DB如果用在桌面程序的本地数据库,用户怎么安装这个程序,开发者根本无法控制的
稍稍跟踪一下,10分钟就能解决,只需要修改两个地方。
别太上升到“西方东方之争了”,人家并无义务帮你到所有。
搜索"database.length"即可。
普通用户都能接受Windows这个词,为什么程序员不能接受西文的文件路径呢?
人气还不错.
Firebird非常不错了, 免费的东西能做到这个程度.
一起佩服这些"傲慢的西方人", 非常敬业.
我对FireBird最大的怨念就是没有全文索引,另外就是存储过程语法太复杂了。
只是"数据库文件的完整路径中不能有中文字符"而以嘛?
在实际应用中最好不要使用中文路径,这谁都知道.如果数据库不能保存中文那才不值得用.
人家又不是说不理,只是说时间问题.
而且这是中文问题,应该中国人解决.
Compiling...
api1.c
Linking...
api1.obj : error LNK2001: unresolved external symbol _isc_start_transaction
api1.obj : error LNK2001: unresolved external symbol _isc_attach_database@24
api1.obj : error LNK2001: unresolved external symbol _isc_detach_database@8
api1.obj : error LNK2001: unresolved external symbol _isc_commit_transaction@8
api1.obj : error LNK2001: unresolved external symbol _isc_sqlcode@4
api1.obj : error LNK2001: unresolved external symbol _isc_dsql_execute_immediate@28
api1.obj : error LNK2001: unresolved external symbol _isc_print_status@4
Debug/api1.exe : fatal error LNK1120: 7 unresolved externals
Error executing link.exe.
api1.exe - 8 error(s), 0 warning(s)
我用VC6编译环境,XP操作系统,由于还是新手,期待大家多多指教,谢谢
FIREBIRD的库我都连接了,在网上进行相关的搜索,发现一个俄国人人的网站,他也是在测试代码的时候与到了同样的问题,我用翻译词典翻译了一下,大致出错内容是GDS32.DLL和GDS.DLL的之间的问题,目前我的机器上只有GDS32.DLL文件,但是那个俄国网站上他好象说是GDS.DLL文件也是必须的,我在官网上找GDS.DLL文件也没找到,真是郁闷!!!
想必有上千员工的Oracle 尚如此(不过影响它的市场了吗?),你又何心强求一个小小Firebird。人家确实精力有限。
there are two ways to work around the problem. one is, as the developers suggested, to use no chinese characters in the path. the other is to create the database in a controllable environment and use that file in a non-controllable environment. to recreate a new database in a non-controllable environment, just drop everyting in the already-created database.
hope this helps.
我发现的这个 bug 就是在1.5.3版本下发现的。不知你是如何测试好用的?
或许你没有理解这个 bug 说的什么意思?
这个 bug 是说 FB 数据库文件名 不能含有 中文字符,
数据库文件所在的每一级父目录名 也都不能含有 中文字符。
也就是说 数据库文件的完整路径中不能有中文字符。
如果 sqlite3.exe c:\.....中文目录\sqlitedb.db 找不到,出错。
如果 sqlite3.exe "c:\....中文目录\sqlitedb.db" 找到。OK,没问题。
用ado.net for sqlite 如果用中文目录,出错,找不到。
看来这些国外的东东,都有这样的问题。我现在也正为这个头痛中。呵呵
楼主翻译的"时间 vs 重要性"有点不太准确,
确切的应该是"时间 vs 更多重要的更改"
其实什么软件都是这样,而且个人的真得很难理解为什么国内一些程序员喜欢使用把路径写成中文这样强烈电脑环境的方法
Windows的"not everything can be fixed! "恐怕更是多了去了,包括一些直接威胁到系统安全的bug
我想,对中文的支持是一个范围很宽的问题,并不只是中文目录名
问题,人家一定认为所有的中文问题可以暂时用折中的方法解决,
但是要彻底解决,涉及的代码太多,
所以...............
不过,我说句心里话,中国的程序员很多是盲从的,
fb很多程序员都不知道,就算知道了也有很多不会选,
他们会问有mysql,sql server用的人多么?
所以人家认为此问题重要度.........................
最近正在比较众多的数据库引擎,想选一个适合项目的,如果选了FB,可能会注意你说的问题
你用apache看看,都可以接受,而且是国际化的要求
如果我懂 C/C++,我当然会改的。
敢情这个问题的重要度很低了?
因此得出结论,他们非常忽视非英文平台的用户,所以说他“傲慢”。
你看,这个西方人已经解释了,现在很忙,有很多重要功能要实现,对于能够绕过去的,在某种程度上可以部分解决问题,暂时还腾不出手来解决。另外他还告诉你了一个软件开发中的常见的,但是却常被无论是东方人还是西方人忽视的基本道理——not everything can be fixed,而且是免费告诉你的;)
总之,一点也没看出这西方人如何傲慢了。
你没觉得那个bug对我们影响很大吗?
比如,中文系统的桌面目录就叫“桌面”,这就不能把程序在桌面上跑,
这个可能性还不算大;
另外,Windows允许用户用中文作用户名,那他的个人目录
C:\Documents and Settings\张三\....
也少不了有中文。使用 Embeded 数据库存储数据,
如果考虑 Windows 用户之间数据隔离、相对保密的话,
一般会往个人目录里面放,这时也会出问题。
我觉得这是个很严重的bug。
另外,我不懂C那套东西(它还像是用C写的),应该改不了。
你这么喜欢Firebird,不如帮他们实现这个功能吧;)