Month: July 2011

Windows 如何找到佔用 port 的程式?

Posted by – July 8, 2011

最近要在桌機上安裝 nginx for windows 時,發現一直啟動失敗,但是 config 測試是 OK 的。想說可能會是 port 80 被佔用了。在 Windows 上要查出 port 被哪支程式佔用並不難,只消兩行指令就可以了。

先進入命令提示列 (Command Prompt)。輸入

C:\>netstat -ano | findstr 0.0:80

得到如下的字串

TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       1860

其中 1860 就是佔用 port 的程式 PID,再輸入

C:\>tasklist | findstr 1860

得到如下的資訊

httpd.exe                  1860 Services                0      4,148 K

表示佔用的是 httpd.exe,也就是 Apache Server 還開著。關掉 httpd.exe 再啟動 nginx 就可以了。

MySQL Reset Auto Increment Number

Posted by – July 3, 2011

Database 裡在開新 table 時,常會使用俱有自動增值屬性 (auto increment) 的欄位來當 primary key,而常見的命名也不外乎是 ID 或是 post_id 之類的。每當插入一筆新資料,ID 就會自動加一,是很方便的功能。不過在刪除資料時,ID 值並不會重設,留下很多空的序列,像是 1, 2, 4, 7, 12 這樣,尤其是系統開發階段更是如此。

除了將 table 刪除,重匯資料以外,MySQL 官網上也有提到如何重設 auto-increment 的指標值。只要輸入下列 query 就能指定指標值:

ALTER TABLE tbl AUTO_INCREMENT = 1;

當然數字可以依需求更改。

若是要在插入資料時就指定數值,要輸入下列 query:

SET insert_id = 40;
INSERT INTO tbl VALUES ('blah', '...');

馬上接著的 insert into 就會是指定的 ID 值了,這個語法是一次性的,並不會影響其他插入的資料。

或是先入插入資料,再用 UPDATE 也可以更改 ID 值。

INSERT INTO tbl VALUES ('blah', '...');
UPDATE tbl SET id = 40;

若是需要知道最後一筆新資料的 ID 值,可以用以下 query:

SELECT LAST_INSERT_ID();