真困擾耶~mysql+delphi |
尚未結案
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
各位大大....幫幫忙啊~~~!!!
我現在所寫的程式是一個轉檔程式,mysql+delphi
現在面臨幾個問題
(1)我要insert資料進資料庫時...卻出現了以下這個問題
實際上...資料庫中並沒有存在這一筆記錄
這有辦法解嗎?? (2)後來我用try..except...end的方式,將出錯的部分忽略
sqlH:='insert into pat_desc (descpatno,patDesc) values ';
sqlH:=sqlH+'('''+patentno+''','''+patdesc+''')';
try
with query1 do
begin
close;
sql.clear;
sql.add(sqlH);
ExecSQL;
end;
except ////如果寫入資料庫有錯的話,記錄到另個table中
with query1 do
begin
close;
sql.clear;
sql.add('insert into pat_error (paterr)
values '+'('''+inttostr(patno)+'_des'+''')');
ExecSQL;
end;
end;
但卻發生了只要有一筆進入到except後,
往後的數筆都會進入except的部分去執行
這到底是怎麼一回事啊~
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
kensoong
初階會員 發表:31 回覆:70 積分:45 註冊:2003-05-28 發送簡訊給我 |
(1)您的資料之PK是否有重覆或是使用 Delphi 存入圖檔時會發生,
mysql error code(2006) Mysql server has gone away 的錯誤,
那是因為圖檔太大了,而 MySQL 的 max_allowed_packet 內定只有 1M
所以我們要調正這個參數,在 INI 加入: [mysqld]
port=3306
socket=MySQL
skip-locking
default-character-set=latin1
set-variable = key_buffer=16M
set-variable = max_allowed_packet=16M
set-variable = thread_stack=128K
set-variable = flush_time=1800
[mysqldump]
quick
set-variable = max_allowed_packet=16M 重新啟動 MySQL ,在試試看就沒問題了。
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
|
kensoong
初階會員 發表:31 回覆:70 積分:45 註冊:2003-05-28 發送簡訊給我 |
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
kensoong 您好
1.我沒有用dbExpress連資料庫
2.對於你所說的重新設參數的部分...想請問一下
是全部都COPY進INI檔貼上嗎??
還是只要這一行就可以了==>set-variable = max_allowed_packet=16M
這是我修改後的INI檔
[mysqld]
basedir=C:/mysql
#bind-address=XXX.XXX.XXX.XXX
datadir=C:/mysql/data
#language=C:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=16M
set-variable = max_allowed_packet=16M
[mysqldump]
quick
set-variable = max_allowed_packet=16M
[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe 還是不行耶...
一樣的錯誤=>MySQL server has gone away
各位幫幫忙啊~
PS:紅色的部分是我修正的部分
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
去下載此 AppServ 2.1.0 with Zend Optimizer 整合版
http://www.appservnetwork.com/
想不到已出到
AppServ 2.3.0 : The AppServ Revolution
==================================================
這是預設值my.ini內容 #This File was made using the WinMySQLAdmin 1.3 Tool #2/10/2001 8:50:22 #Uncomment or Add only the keys that you know how works. #Read the MySQL Manual for instructions [mysqld]
default-character-set=latin1
basedir=C:/APACHE2/mysql
#bind-address=
datadir=C:/APACHE2/mysql/data
#language=C:/AppServ/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=16M
[client]
default-character-set=latin1
[WinMySQLadmin]
user=
password=
Server=C:/APACHE2/MYSQL/bin/mysqld-opt.exe
================================================
改掉
set-variable=key_buffer=16M
依然是 無問題 ok 發表人 - ab 於 2003/11/20 22:16:31
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
MYSQL BLOB與中文BIG5碼的問題 請自己再看看 是否是雙字元問題
我沒delphi 喝喝 你的文字檔 可以在web管理工具的PHPadmin下存入嗎
如果是ok 那就很可能 是程式與delphi 雙字元問題 如果是 wen管理工具的PHPadmin下存入無問題
另一解法 可以將那個部門分離 改用免ODBC的方式來處理 如果是 wen管理工具的PHPadmin下也無法存入
那你就頭大了 雙字元問題有70%的機會 發表人 - ab 於 2003/11/20 22:53:37
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
越來越清楚了
不過 你的文字檔 有內含 Unicode 或GB碼 或萬用字元嗎 你自己再test一下 也不知道你的 文字檔 到底裝甚麼
在 阿帕契 有10MB的限制 你先將 檔案縮小至8mb
因為10mb限制還需扣除其他的 所以真正可存以8mb
設定 自己找一下
這個測試 是要測 PHPADMIN是有經過 阿帕契 所以需先釐清
才能確定 真如你說是MYSQL問題 先看一下 是否有幫助
MySQL中文參考手冊
http://linux.tnc.edu.tw/techdoc/mysql/mysql_doc/manual_toc.html#Crashing
http://netlab.cse.yzu.edu.tw/~statue/cfc/docs/mysqldoc_big5/manual_Server.html 發表人 - ab 於 2003/11/20 23:22:39
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
|
solnone
中階會員 發表:2 回覆:97 積分:69 註冊:2003-05-06 發送簡訊給我 |
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
|
solnone
中階會員 發表:2 回覆:97 積分:69 註冊:2003-05-06 發送簡訊給我 |
前面的 AB 有說
http://netlab.cse.yzu.edu.tw/~statue/cfc/docs/mysqldoc_big5/manual_Server.html
作業系統有其自身文件大小的限制。在Linux上,當前的限制是2G﹔在Solaris 2.5.1上,限制是4G﹔在Solaris 2.6上,限制是1000G。這意味著MySQL表的大小通常由作業系統限制。
預設地,MySQL表最大尺寸大約4G。你可用SHOW TABLE STATUS命令或myisamchk -dv table_name檢查一個表的最大表大小。
如果你需要大於 4G 的表(並且你的作業系統支援它),你應該在你創建表時設定AVG_ROW_LENGTH和MAX_ROWS參數。你也能用ALTER TABLE在以後設置這些。
所以要看你的OS是不是支援,並用ALTER TABLE 去設定吧! QuotedStr 這個function 會將'字元換成''二個字元。
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
lsleo 我沒這樣說阿 你的3m的文件 又沒人可以幫你測 ok ==========================================
那就是那個存不進資料的table
是在table容量到底4GB時,資料就再也進不去了
=========================================
你的mysql還真大 我看你可以朝使用多庫方式
mysql基本上是聽過一機多庫運行 不過不好改 使用資料庫聯結方式 試看看 就巷ACCESS下聯接其他sql
或改
1 多庫方式
2 改運作於Linunx FREEBSD 我是建議FREEBSD喝喝 【Delphi】【轉貼】MySQL的優化
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41194
帶RAID選項的MyIASM表將文件分割成很多文件以突破某些文件系統的2G限制。
討論 看看有無其他方式 3 換成甲骨文或PostgreSQL 資料庫
PostgreSQL 再Linux上是無問題的 不過未調整的預設值比mysql慢
(PostgreSQL 物件關聯資料庫系統)
http://cldp.netking.com.tw/PostgreSQL-HOWTO.html#toc6
《PostgreSQL實務應用》/廖沈宏
http://www.hot.net.tw/book/014/DB20056.htm
官方網站
http://www.postgresql.org/
http://www.pgsql.com.tw/ PostgreSQL 7.4 正式版推出
http://www.postgresql.idv.tw/index.php ===================================================
http://olympus.het.brown.edu/doc/HOWTO/zh-html/PostgreSQL-HOWTO-6.html
PostgreSQL 支援超過 200 Gig 的超級資料庫
PostgreSQL 支援超過 200 Gig 的超級資料庫
32 位元處理器的電腦在資料庫超過 5 GigaByte 時表現會迅速下降。你可用 32 位元處理器執行 30 gig 的資料庫,但表現會下降。32 位元機器受到最多 2 GB 記憶體,2 GB 檔案系統及其他操作系統方面的限制。 對極大型的資料庫來說,我強烈建議你使用 64 位元處理器,如 Digital Alpha、Sun Ultra-sparc 64 位元處理器、Silicon graphics 64 位元處理器、Intel Mercel IA-64 處理器、HPUX 64 位元電腦、IBM 64 位元電腦。使用 64 位元的處理器來編譯 PostgreSQL,它就可以處理大型的資料庫及查詢。查詢大型表格和資料庫的速度會比 32 位元的電腦快數倍。64 位元電腦的優點是你有很大的記憶位址 (memory addressing space) 和操作系統可處理很大的檔案系統、為大型資料庫提供較佳表現、支援更多記憶體、能力更強
=================================================================
看來 難阿南 準備看看自己最後解法的選擇 發表人 - ab 於 2003/11/28 00:06:21
|
lsleo
一般會員 發表:19 回覆:28 積分:9 註冊:2003-05-28 發送簡訊給我 |
|
AB
高階會員 發表:166 回覆:262 積分:125 註冊:2003-08-21 發送簡訊給我 |
就像你貼圖一樣 或至 會員求救區
再貼位置 於發問區 會員求助程式檔案上傳區
http://delphi.ktop.com.tw/forum.asp?FORUM_ID=97
發表文章中的圖檔存放區
http://delphi.ktop.com.tw/forum.asp?FORUM_ID=130
【Linux】【轉貼】客觀公正地評價MySQL和PostgreSQL的優劣
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=41197 發表人 - ab 於 2003/11/28 18:00:54
|
harry112
一般會員 發表:7 回覆:9 積分:3 註冊:2002-10-02 發送簡訊給我 |
|
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |