Oracle中設定auto increment的一些相關筆記

清空資料表

truncate table TABLE_NAME;


設定Auto Increment
參考資料:
http://www.lifeaftercoffee.com/2006/02/17/how-to-create-auto-increment-columns-in-oracle/

先建立一個sequence

create sequence SEQUENCE_NAME
start with 1
increment by 1
nocache;

再建立一個trigger

create or replace trigger TRIGGER_NAME
before insert
on TABLE_NAME
referencing NEW as NEW
for each row
begin
select SEQUENCE_NAME.nextval into :NEW.AUTO_INCREMENT_COLUMN from dual;
end;
/

這樣就完成了

SEQUENCE有下列參數:MINVALUE、MAXVALUE、START WITH、INCREMENT BY、CACHE、NOCACHE、CYCLE

要加nocache,sequence才不會亂跳

SEQUENCE到達最大值之前不能重新計數,只能用DROP刪除後再重新CREATE建立。
可以用ALTER來修改SEQUENCE的參數

ALTER SEQUENCE seq01
INCREMENT BY 100;

用NEXTVAL取得下一個值

SELECT seq01.NEXTVAL FROM DUAL;


用CURRVAL取的目前值

SELECT seq01.CURRVAL FROM DUAL;

Gentoo的套件透過emerge更新時的注意事項

根據CD長輩的教誨
首先

emerge -DuN world

接著

emerge –depclean

最後

revdep-rebuild

這期間如有套件出錯,則

emerge –oneshot 套件

這樣可重編一次該套件,卻不把該套件加入world list裡。

IPv6, openssh, and tcp_wrappers

在一台新重灌好的Gentoo server裡編了IPv6的支援,在開啟openssh時,會有

refused connect from 0.0.0.0

這樣的error message出現,tcp_wrappers的hosts.deny運作也不太正常。
後來找到解決方法為,讓openssh只使用IPv4,在/etc/ssh/sshd_config裡做了以下設定即可

AddressFamily inet

不小心把python移除掉,導致emerge壞掉不能用

手賤不小心把python unmerge了,所以emerge就壞掉不能用了。
手動把python下載回來安裝後還是無效。
再看了這篇 Manually fixing broken portage installations 仍然無效。
最後讓我google到了這篇,才解決了這個問題。
解決方式如下:

# wget http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2
# cd Python-2.4.4
# ./configure –with-fpectl –infodir=/usr/share/info/ –mandir=/usr/share/man
# make
# make install prefix=/usr
# rm /usr/bin/python 2>/dev/null
# ln -s /usr/bin/python2.4 /usr/bin/python2
# ln -s /usr/bin/python2 /usr/bin/python

然後再重新emerge python一次。

針對特定package給予USE flag

例如:
要單獨為
net-analyzer/net-snmp這個package加上lm_sensors這個USE flag

echo 『net-analyzer/net-snmp lm_sensors』 >> /etc/portage/package.use

auto-discovery

因為在之前改用feedburner來整合我的Blogflickrdel.icio.us的feed,但一直忘記wordpress本身也還是有提供feed的,昨天試了一下本來要把那些feed通通導到feedburner去,找到相關資料試了好久始終沒成功,最後放棄。
今天忽然在這篇發現原來feed的auto-discovery是放在各個theme裡得header.php,於是便在那邊把link改掉指到我的feedburner的feed那邊去嚕,這樣feedburner就還是能夠從wordpress本身提供的feed拿到資料,而一般人直接用browser訂閱時卻會直接導到feedburner的feed 去了。
請大家用這個訂閱
http://feeds.feedburner.com/leolo

FreeBSD帳號密碼轉移至Linux

FreeBSD的帳號密碼及其他資訊都存在master.passwd,Linux則分別存在passwd及shadow中。
master.passwd@FreeBSD

帳號:密碼:UID:GID:Login Class:Change:Expire:Full Name:家目錄:Login SHELL

  • Login Class:幾乎沒在用了,通常是空的
  • Change:強迫使用者改密碼的時間週期, 0 表示不設定
  • Expire:使用者帳號的使用期限, 0 表示不設定

passwd@Linux

帳號:密碼:UID:GID:Full Name:家目錄:Login SHELL

FreeBSD比Linux多了三個欄位
所以我們將那三個欄位捨棄,並把密碼那欄設為x,因為Linux的密碼是存在shadow

cat master.passwd.bsd | awk -F":" '$3>=1002&&$3 passwd.linux

shadow@Linux

帳號:密碼:3:4:5:6:7:8:9

  • 3.last password change
  • 4.days until change allowed
  • 5.days before change required
  • 6.days warning for expiration
  • 7.days before account inactive
  • 8.date when account expires
  • 9.reserved for future use

接著處理shadow

cat master.passwd.bsd | awk -F":" '$3>=1002&&$3 shadow.linux

再來處理group

cat group.bsd | awk -F":" '$3 >=1002&&$3 group.linux

接著把他們附加到原本的檔案後面


cat shadow.linux >> /etc/shadow
cat passwd.linux >> /etc/passwd
cat group.linux >> /etc/group

MySQL升級5.0與UTF-8之相關解決方法

從MySQL4.0升級至5.0。

首先把資料dump出來 。由於先前用4.0時我的資料是存成latin1,不管是Big5或是wordpress的UTF-8存進去後都是變成lantin1,所以dump出來後要用iconf或piconf把他轉成UTF-8,記得dump出來時要加上–default-character-set=latin1

如果原先是Big5的資料,像我的Coppermine Photo Gallery,dump出來後就直接把Big5轉成UTF-8即可

#mysqldump -u帳號 -p –default-character-set=latin1 資料庫 >output.sql
#piconv -f big5 -t utf8 output.sql >utf8.sql

如果原先是UTF-8的資料,像是wordpress,dump出來後要先轉成Big5後,再把他轉成UTF-8,因為原先dump出來的是偽裝成UTF-8的lantin1不是真正的UTF-8

#mysqldump -u帳號 -p –default-character-set=latin1 資料庫 >output.sql
#piconv -f utf8 -t big5 output.sql > big5.sql
#piconv -f big5 -t utf8 big5.sql >utf8.sql

接著MySQL5.0灌好後,MySQL的my.cnf設定檔內要加入以下設定

[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8

但也有看到資料說[mysqld]那邊加上 default-character-set=utf8跟 default-collation=utf8_general_ci後,一些舊的使用Big5編碼的php程式,又沒有加入連資料庫時指定的編碼方式的 相關code的話,那些程式就會爛掉,所以目前我是沒有加上那兩行。接著建立空的資料庫準備把dump出來的資料import進去,SQL語法應該類似下面這樣,要加上DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

CREATE DATABASE `abc` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;

再來就是把剛剛dump出來後的sql檔在import進去了,這裡有兩點要注意的。

  1. 剛剛dump出來的sql檔如果原先是Big5里面會有一些像是許功蓋這些字後面會多了一個』",記得用文字編輯器把他消掉
  2. import進去時記得還要先修改一下dump出來的sql檔,在最前面加上

SET NAMES utf8;
SET CHARACTER_SET_CLIENT=utf8;
SET CHARACTER_SET_RESULTS=utf8;

再來把每個資料表後面的

TYPE=MyISAM;

改成

ENGINE=MyISAM DEFAULT CHARSET=utf8;

都改好後就可以把他import進去了

#mysql -u帳號 -p 資料庫

不過以上實在有點麻煩,所以我把多餘的』/』消掉後,就直接用phpMyAdmin把他import進去了,import時記得文字編碼檔案要選utf8即可
順便記一下寫php時如是配合UTF-8的資料庫的話該注意,在真正送出query前要先加入以下三行

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER_SET_CLIENT=utf8");
mysql_query("SET CHARACTER_SET_RESULTS=>utf8");

檢查語系的SQL語法

show variables like "%character%";

以上是參考下列資料作出來的紀錄

Related Posts with Thumbnails
   Newer→