MSSQL有Image欄,PostgreSQL是那種欄位型態? |
|
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
承japhen等前輩指點,存檔案到DB可以用Access=OLEobject/MSSQL-Image/MySQL,Oracle=Blob欄位,及提供開發經驗,小弟十分感謝。小弟現在有個問題,在PostgreSQL是要採要那個型態的欄位?
小弟這兩天有去過很多網站找相關資料,也用Google上天下地了好久。但均無功無返。 小弟有試過 bytea及oid這兩種PostgreSQL-binary欄位格式,前者被Delphi解讀為TVarByteSField﹝而非BlobField﹞,後者被解讀為Integer欄位。均無法存檔案。 小弟找過好幾篇由MySQL或Access或Oracle轉PostgreSQL的文章,也沒有找到答案。 Access、MSSQL、MySQL、Oracle可以的,難道PostgreSQL不能嗎?不可能吧!
------
Kevin |
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
小弟在網路上找到兩篇提及此問題的文章如下:
====第一篇如下================================================================== > It seems that in the backend for version 8.0 (maybe a bit before that, I'm not sure), > the implementation for the lo-datatype changed. Now it's a domain, before you had to > create your own type named lo to have a field capable of storing (Binary) Large OBjects. > Somehow the field is now recognized in Delphi as an IntegerField, and no longer as a field for large objects. Just a thought of mine, but maybe the implementation in the backend changed, so the ODBC > recognizes and passes the field as type integer, and no longer as a lo/blob field.Otherwise it's something in the implementation of the ODBC driver itself that passes the > field type as something that delphi understands as integer, maybe the odbc really says it's an integerfield. I'll try the 08.02 and see what that does. ====第一篇============================================================ ================第二篇如下========================== I have installed the 08.02.0002 snapshot after uninstalling the 08.01. It looks like the problem is now solved. Not only do the Delphi ADO components recognize my lo field as TBlobField, but it even works within a transaction (which is nice because we had some problems there in the past). I did check the 7.4 protocol option, which was enabled. If anyone needs it or has a similar problem, I can post my connection settings (since they seem to work), just let me know. As I understood the 08.02 branch is going stable in the near future. So before going into production with this I'll be anctiously waiting for that to happen. Escpecially because Dave said the driver name will change before the release. Quote Dave Page: "Note that the driver name will probably change before release, but will be set in stone once the first 08.02 stable release is out." Thanks for the reply's. I'm a happy developper again, I can finally ditch the MSSQL Desktop backend ;) ================第二篇如上==========================
------
Kevin |
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
|
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
謝謝bestlong前輩多次幫忙。
小弟這一兩個星期為這個問題真是忙翻了。原先在Access及MSSQL上均很順利的過關,到測到PostgreSQL時就老是出問題。老是InvalidclassTypeCast,及Need Blob,But TVarByteSField Acture 告知型態不合。後來到處找相關資料,在資庫網找到兩篇也是這個情況。在深度論壇及站裏也找遍了,沒有。後來在PostgreSQL.org翻了好久好久,總算找到有人提到是psqlODBC的問題,並且講只要更新到8.2版即可。可是小弟據此前後在五台電腦上殺殺裝了好幾十次,還是一樣的錯誤訊息。昨天去天瓏書局找PostgreSQL的原文書﹝中文版的三本小弟早就翻了好幾遍了﹞,找到四本,還有兩本是很少見的PHP搭配PostgreSQL的原文書。小弟硬是沒吃中飯,硬花了三小時仔細研究。其中講到Blob是各資料庫都有的重要結構,PG當然也有,這話聽起來還蠻像話。更提及Bytea上限是1G,如果超過要改用lo,那真是廢話,那裏有人會將寶貴的空間去放數十G的檔案,鬼才會這般作,就1G的Bytea就綽綽有餘了。其中有一本PHP PostgreSQL還講到特殊的以text欄位型態及hex2bin/bin2hex作存檔的處理技巧。 本來我的舊系統是在Access及PostgreSQL上執行的,因為在PostgreSQL上老是碰壁,前兩天我只有花了兩天時間將系統全面移殖到mssql上,這作業到是很順利。可是mssql總是要配合區域網路,不像PG可以在單機的Win環境下執行,可以在NoteBook上隨身使用那般方便。我也試者將系統移殖到可單機跑的MySQL上,可是工程稍有點麻煩中途就放棄了。 好累。
------
Kevin |
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
試到今天早上十點,應該已滿兩個星期了吧。在公司及家裏四台電腦白天黑夜不眠不休的殺殺裝裝數十次了之後,我過了第一關了。說明如下:
1.我的環境:Win2K/WinXP、psql8.X、Delphi7、psqlODBC8.X 2.原先:WinPostgreSQL8.01 psqlODBC8.0測bytea失敗。測oid及lo,失敗。 3.更新成:WinPostgreSQL8.2 psqlODBC8.2。記得要先remove舊版的ODBC-DSN再uninstall-psqlODBC8.0,否則無法刪DSN。還有WinPostgreSQL要設postgreSQL.conf﹝加listen_adress='*'﹞及設pg_hba.conf﹝加IP﹞。結果,還是失敗。 4.psqlODBC特殊設定:以往在psqlODBC8.0時無此設定,所以當我在PG老家看到原因是psqlODBC須要更新的文章後,我還是試了三天,才試出來。原來設psqlODBC時還要設DataSource-Bitbtn,要將bytea as lo勾選及Protocol要選7.4才行。 現在存附檔到PostgreSQL-bytea時,Delphi不會再跟我囉嗦TVarBytesField與BlobField了。 不過問題還沒結束,我只是過了第一關而已。還有個ErrorMessage等我去處理。那就是:WARNING:nonstandard use of \\ in a stringliteral。我看了PG-Bytea的線上說明,真是頭大,還是上來喊救命吧。真是撐不下去了。 HELP! HELP! HELP! HELP! HELP! HELP! HELP!
------
Kevin |
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
|
multics
一般會員 發表:0 回覆:6 積分:11 註冊:2007-01-21 發送簡訊給我 |
|
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |