<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    最近的一個項目在Hibernate使用C3P0的連接池,數據庫為Mysql。開發測試沒有問題,在運行中每個一段長的空閑時間就出現異常:

    org.hibernate.exception.JDBCConnectionException: could not execute query 
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:
    74
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:
    43

    Caused by: com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception
    /error: 


    ** BEGIN NESTED EXCEPTION ** 

    com.mysql.jdbc.CommunicationsException 
    MESSAGE: Communications link failure due to underlying exception: 

    ** BEGIN NESTED EXCEPTION ** 

    java.net.SocketException 
    MESSAGE: Broken pipe 

    STACKTRACE: 

    java.net.SocketException: Broken pipe 
    at java.net.SocketOutputStream.socketWrite0(Native Method) 
     
    ** END NESTED EXCEPTION ** 


    查看了Mysql的文檔,以及Connector/J的文檔以及在線說明發現,出現這種異常的原因是:

    Mysql服務器默認的“wait_timeout”是8小時,也就是說一個connection空閑超過8個小時,Mysql將自動斷開該connection。這就是問題的所在,在C3P0 pools中的connections如果空閑超過8小時,Mysql將其斷開,而C3P0并不知道該connection已經失效,如果這時有Client請求connection,C3P0將該失效的Connection提供給Client,將會造成上面的異常。

    解決的方法有3種:

    1. 增加wait_timeout的時間。
    2. 減少Connection pools中connection的lifetime。
    3. 測試Connection pools中connection的有效性。

    當然最好的辦法是同時綜合使用上述3種方法,下面就DBCP和C3P0分別做一說明,假設wait_timeout為默認的8小時

    DBCP增加以下配置信息:

    //set to 'SELECT 1' 
    validationQuery = "SELECT 1" 
    //set to 'true' 
    testWhileIdle = "true" 
    //some positive integer 
    timeBetweenEvictionRunsMillis = 3600000 
    //set to something smaller than 'wait_timeout' 
    minEvictableIdleTimeMillis = 18000000 
    //if you don't mind a hit for every getConnection(), set to "true" 
    testOnBorrow = "true" 

    C3P0增加以下配置信息:
    //獲取connnection時測試是否有效 
    testConnectionOnCheckin = true 
    //自動測試的table名稱

    automaticTestTable
    =C3P0TestTable

    //set to something much less than wait_timeout, prevents connections from going stale 
    idleConnectionTestPeriod = 18000 
    //set to something slightly less than wait_timeout, preventing 'stale' connections from being handed out 
    maxIdleTime = 25000 
    //if you can take the performance 'hit', set to "true" 
    testConnectionOnCheckout = true 

    更多的配置信息大家可以查看C3P0文檔,Connector/J文檔,以及DBCP的文檔。
    posted @ 2008-06-03 08:55 重歸本壘(Bing) 閱讀(10618) | 評論 (0)編輯 收藏
     
    public int getCount(String emailGroupId, String emailBatchId)
                
    throws HibernateException {

            Session session 
    = HibernateUtil.currentSession();
            Transaction tx 
    = session.beginTransaction();

            String hql 
    = "select count(*) from EmailSendInfo where email_group_id = :emailGroupId and batch_id = :batchId";
            Query query 
    = session.createQuery(hql);

            query.setString(
    "emailGroupId", emailGroupId);
            query.setString(
    "batchId", emailBatchId);
            
    /**//*
             * for (Iterator it = query.iterate(); it.hasNext();) { return
             * ((Integer) it.next()).intValue(); }
             
    */

            
    try {
                
    return ((Integer) query.iterate().next()).intValue();
            }
     catch (Exception e) {
                
    throw new HibernateException("");
            }
     finally {
                tx.commit();
                HibernateUtil.closeSession();
            }

        }

    spring+hibernate

    //第一種方法:
      String hql = "select count(*) from User as user";
      Integer count 
    = (Integer)getHibernateTemplate().find(hql).listIterator().next();
      
    return count.intValue();

    //第二種方法:
     String hql = "select count(*) from User as user";
      
    return ((Integer)getHibernateTemplate().iterate(hql).next()).intValue();

    //第三種方法:
     String hql = "select count(*) from User as user";
     Query query 
    =  getHibernateTemplate().createQuery( getSession(),hql);
     
    return ((Integer)query.uniqueResult()).intValue(); 

    posted @ 2008-05-29 14:59 重歸本壘(Bing) 閱讀(9290) | 評論 (1)編輯 收藏
     

    取出字符中文沒有亂碼,而寫入確是亂碼,
    在java,jsp,數據庫,表格都統一為、utf8或GBK等后,
    最后要在,my.ini或my.cnf中加入編碼
    如:
    [mysqld]
    default-character-set=utf8
    default-storage-engine=INNODB

    [client]

    port=3306

    [mysql]

    default-character-set=utf8


     

    posted @ 2008-05-26 17:06 重歸本壘(Bing) 閱讀(261) | 評論 (0)編輯 收藏
     
    下載地址為:http://dev.mysql.com/downloads/mysql/5.1.html,打開此網頁,下拉網頁找到“Linux x86 generic RPM (statically linked against glibc 2.2.5) downloads項,找到“Server”和“Client programs”項,下載需要的上述兩個rpm文件。
    2、安裝
    MySQL
       rpm文件是Red Hat公司開發的軟件安裝包,rpm可讓Linux在安裝軟件包時免除許多復雜的手續。該命令在安裝時常用的參數是 –ivh ,其中i表示將安裝指定的rmp軟件包,V表示安裝時的詳細信息,h表示在安裝期間出現“#”符號來顯示目前的安裝過程。這個符號將持續到安裝完成后才停止。

       1)安裝服務器端

       在有兩個rmp文件的目錄下運行如下命令:

       [root@test1 local]# rpm -ivh
    MySQL-server-5.1.7-0.i386.rpm MySQL-client-5.1.7-0.i386.rpm  
    顯示如下信息。
    warning:
    MySQL-server-5.1.7-0.i386.rpm

    signature: NOKEY, key ID 5072e1f5
       Preparing...       ########################################### [100%]
       1:MySQL-server     ########################################### [100%]
        。。。。。。(省略顯示)
       /usr/bin/mysqladmin -u root password 'new-password'
       /usr/bin/mysqladmin -u root -h test1 password 'new-password'
        。。。。。。(省略顯示)
       Starting mysqld daemon with databases from /var/lib/mysql
       如出現如上信息,服務端安裝完畢。測試是否成功可運行netstat看Mysql端口是否打開,如打開表示服務已經啟動,安裝成功。Mysql默認的端口是3306。
       [root@test1 local]# netstat -nat
       Active Internet connections (servers and established)
       Proto Recv-Q Send-Q Local Address      Foreign Address     State   
       tcp  0  0 0.0.0.0:3306     0.0.0.0:*      LISTEN   
       上面顯示可以看出MySQL服務已經啟動。
       2)安裝客戶端
       運行如下命令:
       [root@test1 local]# rpm -ivh
    MySQL-client-5.1.7-0.i386.rpm

       warning: MySQL-client-5.1.7-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5
       Preparing...    ########################################### [100%]
       1:MySQL-client  ########################################### [100%]
       顯示安裝完畢。
       用下面的命令連接mysql,測試是否成功。
      三、登錄MySQL

       登錄MySQL的命令是mysql, mysql 的使用語法如下:
       mysql [-u username] [-h host] [-p[password]] [dbname]
       username 與 password 分別是 MySQL 的用戶名與密碼,mysql的初始管理帳號是root,沒有密碼,注意:這個root用戶不是Linux的系統用戶。MySQL默認用戶是root,由于初始沒有密碼,第一次進時只需鍵入mysql即可。
       [root@test1 local]# mysql
       Welcome to the MySQL monitor. Commands end with ; or \g.
       Your MySQL connection id is 1 to server version: 4.0.16-standard
       Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
       mysql>
       出現了“mysql>”提示符,恭喜你,安裝成功!
       增加了密碼后的登錄格式如下:
       mysql -u root -p
       Enter password: (輸入密碼)
       其中-u后跟的是用戶名,-p要求輸入密碼,回車后在輸入密碼處輸入密碼。

       注意:這個mysql文件在/usr/bin目錄下,與后面講的啟動文件/etc/init.d/mysql不是一個文件。

       四、MySQL的幾個重要目錄

       MySQL安裝完成后不象SQL Server默認安裝在一個目錄,它的數據庫文件、配置文件和命令文件分別在不同的目錄,了解這些目錄非常重要,尤其對于Linux的初學者,因為 Linux本身的目錄結構就比較復雜,如果搞不清楚MySQL的安裝目錄那就無從談起深入學習。

       下面就介紹一下這幾個目錄。

       1、數據庫目錄
       /var/lib/mysql/

       2、配置文件
       /usr/share/mysql(mysql.server命令及配置文件)

       3、相關命令
       /usr/bin(mysqladmin mysqldump等命令)

       4、啟動腳本
       /etc/rc.d/init.d/(啟動腳本文件mysql的目錄)
      五、修改登錄密碼

       MySQL默認沒有密碼,安裝完畢增加密碼的重要性是不言而喻的。

       1、命令
       usr/bin/mysqladmin -u root password 'new-password'
       格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼

       2、例子
       例1:給root加個密碼123456。
       鍵入以下命令 :
       [root@test1 local]# /usr/bin/mysqladmin -u root password 123456
       注:因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。

       3、測試是否修改成功
       1)不用密碼登錄
       [root@test1 local]# mysql
       ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
       顯示錯誤,說明密碼已經修改。
       2)用修改后的密碼登錄
       [root@test1 local]# mysql -u root -p
       Enter password: (輸入修改后的密碼123456)
       Welcome to the MySQL monitor. Commands end with ; or \g.
       Your MySQL connection id is 4 to server version: 4.0.16-standard
       Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
       mysql>
       成功!
       這是通過mysqladmin命令修改口令,也可通過修改庫來更改口令。

       六、啟動與停止

       1、啟動
       MySQL安裝完成后啟動文件mysql在/etc/init.d目錄下,在需要啟動時運行下面命令即可。
       [root@test1 init.d]# /etc/init.d/mysql start

       2、停止
       /usr/bin/mysqladmin -u root -p shutdown

       3、自動啟動
       1)察看mysql是否在自動啟動列表中
       [root@test1 local]# /sbin/chkconfig --list
       2)把MySQL添加到你系統的啟動服務組里面去
       [root@test1 local]# /sbin/chkconfig –- add mysql
       3)把MySQL從啟動服務組里面刪除。
       [root@test1 local]# /sbin/chkconfig –-del mysql
    七、更改MySQL目錄

       MySQL默認的數據文件存儲目錄為/var/lib/mysql。假如要把目錄移到/home/data下需要進行下面幾步:

       1、home目錄下建立data目錄
       cd /home
       mkdir data

       2、把MySQL服務進程停掉:
       mysqladmin -u root -p shutdown

       3、把/var/lib/mysql整個目錄移到/home/data
       mv /var/lib/mysql /home/data/
       這樣就把MySQL的數據文件移動到了/home/data/mysql下

       4、找到my.cnf配置文件
       如果/etc/目錄下沒有my.cnf配置文件,請到/usr/share/mysql/下找到*.cnf文件,拷貝其中一個到/etc/并改名為my.cnf)中。命令如下:
       [root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

       5、編輯MySQL的配置文件/etc/my.cnf
       為保證MySQL能夠正常工作,需要指明mysql.sock文件的產生位置。修改socket=/var/lib/mysql/mysql.sock一行中等號右邊的值為:/home/mysql/mysql.sock 。操作如下:
       vi  my.cnf    (用vi工具編輯my.cnf文件,找到下列數據修改之)
       # The MySQL server
        [mysqld]
        port   = 3306
        #socket  = /var/lib/mysql/mysql.sock(原內容,為了更穩妥用“#”注釋此行)
        socket  = /home/data/mysql/mysql.sock   (加上此行)

       6、修改MySQL啟動腳本/etc/rc.d/init.d/mysql
       最后,需要修改MySQL啟動腳本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等號右邊的路徑改成你現在的實際存放路徑:home/data/mysql。
       [root@test1 etc]# vi /etc/rc.d/init.d/mysql
       #datadir=/var/lib/mysql    (注釋此行)
       datadir=/home/data/mysql   (加上此行)

       7、重新啟動MySQL服務
       /etc/rc.d/init.d/mysql start
       或用reboot命令重啟Linux
       如果工作正常移動就成功了,否則對照前面的7步再檢查一下。

       八、MySQL的常用操作

       注意:MySQL中每個命令后都要以分號;結尾。

       1、顯示數據庫
       mysql> show databases;
       +----------+
       | Database |
       +----------+
       | mysql  |
       | test   |
       +----------+
       2 rows in set (0.04 sec)
       Mysql剛安裝完有兩個數據庫:mysql和test。mysql庫非常重要,它里面有MySQL的系統信息,我們改密碼和新增用戶,實際上就是用這個庫中的相關表進行操作。

       2、顯示數據庫中的表
       mysql> use mysql; (打開庫,對每個庫進行操作就要打開此庫,類似于foxpro )
       Database changed

       mysql> show tables;
       +-----------------+
       | Tables_in_mysql |
       +-----------------+
       | columns_priv  |
       | db       |
       | func      |
       | host      |
       | tables_priv   |
       | user      |
       +-----------------+
       6 rows in set (0.01 sec)

       3、顯示數據表的結構:
       describe 表名;

       4、顯示表中的記錄:
       select * from 表名;
       例如:顯示mysql庫中user表中的紀錄。所有能對MySQL用戶操作的用戶都在此表中。
       Select * from user;

       5、建庫:
       create database 庫名;
       例如:創建一個名字位aaa的庫
       mysql> create databases aaa;
    6、建表:
       use 庫名;
       create table 表名 (字段設定列表);
       例如:在剛創建的aaa庫中建立表name,表中有id(序號,自動增長),xm(姓名),xb(性別),csny(出身年月)四個字段
       use aaa;
       mysql> create table name (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date);
       可以用describe命令察看剛建立的表結構。
       mysql> describe name;

       +-------+---------+------+-----+---------+----------------+
       | Field | Type  | Null | Key | Default | Extra     |
       +-------+---------+------+-----+---------+----------------+
       | id  | int(3) |   | PRI | NULL  | auto_increment |
       | xm  | char(8) | YES |   | NULL  |        |
       | xb  | char(2) | YES |   | NULL  |        |
       | csny | date  | YES |   | NULL  |        |
       +-------+---------+------+-----+---------+----------------+

       7、增加記錄
       例如:增加幾條相關紀錄。
       mysql> insert into name values('','張三','男','1971-10-01');
       mysql> insert into name values('','白云','女','1972-05-20');
       可用select命令來驗證結果。
       mysql> select * from name;
       +----+------+------+------------+
       | id | xm  | xb  | csny    |
       +----+------+------+------------+
       | 1 | 張三 | 男  | 1971-10-01 |
       | 2 | 白云 | 女  | 1972-05-20 |
       +----+------+------+------------+

       8、修改紀錄
       例如:將張三的出生年月改為1971-01-10
       mysql> update name set csny='1971-01-10' where xm='張三';

       9、刪除紀錄
       例如:刪除張三的紀錄。
       mysql> delete from name where xm='張三';

       10、刪庫和刪表
       drop database 庫名;
       drop table 表名;

       九、增加MySQL用戶

       格式:grant select on 數據庫.* to 用戶名@登錄主機 identified by "密碼"
    例1、增加一個用戶user_1密碼為123,讓他可以在任何主機上登錄,并對所有數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入MySQL,然后鍵入以下命令:

       mysql> grant select,insert,update,delete on *.* to user_1@"%" Identified by "123";
    例1增加的用戶是十分危險的,如果知道了user_1的密碼,那么他就可以在網上的任何一臺電腦上登錄你的MySQL數據庫并對你的數據為所欲為了,解決辦法見例2。

      例2、增加一個用戶user_2密碼為123,讓此用戶只可以在localhost上登錄,并可以對數據庫aaa進行查詢、插入、修改、刪除的操作(localhost指本地主機,即MySQL數據庫所在的那臺主機),這樣用戶即使用知道user_2的密碼,他也無法從網上直接訪問數據庫,只能通過 MYSQL主機來操作aaa庫。

       mysql>grant select,insert,update,delete on aaa.* to user_2@localhost identified by "123";

       用新增的用戶如果登錄不了MySQL,在登錄時用如下命令:

       mysql -u user_1 -p -h 192.168.113.50 (-h后跟的是要登錄主機的ip地址)

       十、備份與恢復

       1、備份

       例如:將上例創建的aaa庫備份到文件back_aaa中

       [root@test1 root]# cd /home/data/mysql (進入到庫目錄,本例庫已由val/lib/mysql轉到/home/data/mysql,見上述第七部分內容)
       [root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa

       2、恢復

       [root@test mysql]# mysql -u root -p ccc < back_aaa
    posted @ 2008-05-26 16:59 重歸本壘(Bing) 閱讀(419) | 評論 (0)編輯 收藏
     
    1. 本文需要兩個文件,httpd和subversion。
    ·httpd是web服務器,用來通過web訪問subversion,這里是官方網站,這里是它的下載網頁,
      這里可以下載到httpd-2.2.2.tar.bz2。
    ·subversion就是本文的主角,這里是他的官方網站,這里是它的下載網頁,
      這里可以下載到subversion-1.3.1.tar.bz2
    2. 新建一個用戶:svnroot
    最好不要讓root用戶參與到svn的權限管理和日常的運行和維護工作中來,但是下面的一些安裝和配置操作還是 需要root用戶來完成的,因為有些操作只有root才能做。
    3. 編譯安裝httpd (root用戶操作):
    //解壓apache2安裝包
    # tar xvzf httpd-2.2.2.tar.gz
    //進入解壓后的目錄
    # cd httpd-2.2.2
    //配置apache安裝,前兩個參數是必須要加的,你還可以根據您的需要添加其他的參數。
    //后面的參數制定你要把apache安裝哪里
    # ./configure --enable-dav --enable-so --prefix=/usr/local/apache2/
    # make
    //安裝
    # make install
    # cd /usr/local/apache2/bin
    //啟動apache服務
    # ./apachectl start
    //打開瀏覽器http://localhost/如果有測試頁"It works!"出現則證明已經安裝成功。
    3. 安裝Subversion
    //解壓SubVersion安裝包 (root用戶進行下面的操作)
    # tar xvzf Subversion-1.3.1.tar.gz
    //進入解壓后的目錄
    # cd Subversion-1.3.1
    //配置subversion安裝
    #./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion
    --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib
    --enable-maintainer-mode

    //提請注意的是:沒有加上后面兩個參數,服務器會出現500錯誤,apache的error_log顯示如下:
    //Could not fetch resource information. [500, #0]
    //Could not open the root of the repository [500, #22]
    //Can't set position pointer in file '/web/www_root/svn/test/db/revs/0': Invalid argument [500, #22]
    # make
    //安裝
    # make install
    //創建庫文件所在的目錄 (svnroot用戶進行下面的操作)
    # mkdir /home/svnroot/repository
    //進入subversion的bin目錄
    # cd /usr/local/subversion/bin
    //創建倉庫"test"
    # ./svnadmin create /home/svnroot/repository/test
    # cd /home/svnroot/repository/test
    //看看是不是多了些文件,如果是則說明Subversion安裝成功了
    # ls –l
    # cd /home/user/import
    //這條語句將把路徑/home/user/import下找到的文件導入到你創建的Subversion 倉庫中去,
    //提交后的修訂版為1。
    # ./svn import –m  /home/user/import file:///home/svnroot/repository/test
    //不讓其他人有該目錄的權限
    # chmod 700 /home/svnroot/repository

    4. 修改Apache配置文件
    # cd /usr/local/apadche2/bin
    //啟動Apache
    # ./apachect1 start
    # vi /usr/local/apache2/conf/httpd.conf
      
    //在最下面添加
       LoadModule dav_svn_module modules/mod_dav_svn.so
       LoadModule authz_svn_module modules/mod_authz_svn.so
       <Location /svn>
       DAV svn
       SVNParentPath /home/svnroot/repository/
    //svn父目錄
       AuthzSVNAccessFile /home/svnroot/repository/authz.conf
    //權限配置文件
       AuthType Basic
    //連接類型設置
       AuthName "Subversion.zoneyump"
    //連接框提示
       AuthUserFile /home/svnroot/repository/authfile
    //用戶配置文件
       Require valid-user
    //采用何種認證
       </Location>
       //其中authfile是通過"htpasswd [–c] /home/svnroot/repository/authfile username password"來創建的
       //"Require valid-user"告訴apache在authfile中所有的用戶都可以訪問。如果沒有它,
       //則只能第一個用戶可以訪問新建庫

    5. 重啟apache
    # ./usr/local/apache2/bin/apachectl restart
    //打開瀏覽器訪問http://localhost/svn/test/,如果有東西顯示就說明成功。
    6. 權限管理
    1)增加用戶
    # htpasswd [-c] /home/svnroot/repository/authfile wooin
    //第一次設置用戶時使用-c表示新建一個用戶文件。回車后輸入用戶密碼,完成對用戶的增加
    # htpasswd authfile 用戶名(加入新的用戶)
    2)權限分配
    # vi /home/svnroot/repository/authz.conf
       [test:/]
    //這表示,倉庫test的根目錄下的訪問權限
       wooin = rw
    //test倉庫wooin用戶具有讀和寫權限
       bao = r
    //test倉庫bao用戶具有讀權限
       [test2:/]
    //test2倉庫根目錄下的訪問權限
       wooin = r
    //wooin用戶在test2倉庫根目錄下只有讀權限
       bao =
    //bao用戶在 test2倉庫根目錄下無任何權限
       [/]
    //這個表示在所有倉庫的根目錄下
       * = r
    //這個表示對所有的用戶都具有讀權限
       #[groups]
    //這個表示群組設置
       #svn1-developers = wooin, bao
    //這個表示某群組里的成員
       #svn2-developers = wooin
       #[svn1:/]
       #@svn1-developers = rw
    //如果在前面加上@符號,則表示這是個群組權限設置
    將這個設置完成后。重啟Apache,就可以通過
    http://localhost/svn/test
    這個URL來訪問倉庫了,當然,受權限的限制,必須是合法用戶才能訪問且具有相應的權限
    7. 一些備忘:
    1. svn checkout http://localhost/svn/hello.world

    2. svn commit 時的默認編輯器的環境變量$SVN_EDITOR=vi需要手動設定,用kate好像有問題

    3. 如果linux的登錄用戶名密碼都和svn的其中一個用戶名密碼相同時,在checkout的時候不會要求輸入用戶名密碼直接就可以checkout出來。比如:linux有個用戶wooin,svn也有一個用戶wooin,并且密碼都是一樣的,當用wooin登錄linux后,執行checkout,可以直接提取出源碼文件,不用輸入認證信息。

    4. 在svn使用過程中牽扯到幾種權限:文件系統的權限,linux系統權限,svn用戶的權限,apache進程的權限。

    文件系統的權限,linux系統權限:這里相同的意思,就是平時大家使用linux時文件夾和文件的訪問權限。在 svn建立倉庫,文件夾,配置文件的時候用svnroot用戶,并將倉庫權限設置為700,不允許其他用戶直接通過文件系統查看,只能由svnroot進行管理。

    apache進程的權限:因為所有跟倉庫傳輸的操作都是通過apache進程進行的,所以即使你給svn用戶設置了很大的權限,但是apache進程沒有訪問倉庫或者相關文件的權限也沒有用,apache進程的權限設置在 /usr/local/apache2/conf/httpd.conf 文件中配置,找到文件中的這兩行:
    User daemon # 將daemon改為svnroot,讓apache進程以svnroot的身份運行
    Group daemon

    svn用戶的權限:就是在repository/authz.conf文件中設置的權限信息,是svn用來管理倉庫訪問權限的。

    5. svn服務器設置有兩種方式:http 和 svnserve。這里介紹的是http方法

    6. 在/etc/profile的結尾設置一些svn啟動時要做的工作
    # start apache server for svn
    /usr/sbin/apachectl start
    export SVN_EDITOR=vi

    7. APR libraries 安裝 SVN 的時候最好指定 --with-apr= 和 --with-apr-util= 參數到 Apache 安裝的根目錄
    (ServerRoot)下,而不是使用缺省的 SVN 安裝包中自帶的 apr 。否則如果你安裝的 Apache
    版本不同有可能導致 APR 庫不匹配,出現類似:
    Can't set position pointer in file '/svn/test/db/revs/1': Invalid argument 的錯誤。
    Updated 2006-04-20 16:30 -- 比如說如果你安裝的是apache 2.2.0版本,就需要在編譯安裝svn的時候指定
    --with-apxs和--with-apr參數到你的apache2.2.0安裝目錄下:
    ./configure --prefix=${subversionInstallFolder} /
    --with-apxs=${apacheInstallFolder}/bin/apxs /
    --with-apr=${apacheInstallFolder} /
    --with-apr-util=${apacheInstallFolder} /
    --with-ssl /
    --with-zlib /
    --enable-maintainer-mode
    posted @ 2008-05-23 12:23 重歸本壘(Bing) 閱讀(1419) | 評論 (0)編輯 收藏
     
    rm -rf 目錄名
    rmdir只能刪除空目錄
    posted @ 2008-05-23 12:21 重歸本壘(Bing) 閱讀(1739) | 評論 (0)編輯 收藏
     

    改變一個文件的權限: chmod mode file|dir
    改變所有子目錄的權限: chmod mode dir -R

    mode = 777 or 752 and so on.

    mode的三個數字,分別表示 owner,group,others所具有的權限。

    1 = x 執行 2 = w 寫 4 = r 讀,比如owner具有所有權限,1+2+4=7,

    又比如 group 具有 讀 和 執行 權限 1+4 = 5

    posted @ 2008-05-23 12:18 重歸本壘(Bing) 閱讀(16735) | 評論 (0)編輯 收藏
     
    原因:如果上一次編譯時為20071001,你把系統時間改成20070901后再編譯就會報這樣的錯誤.
    解決:把時間改了或運行下來命令再make
    find . -type f -exec touch {} \;
    posted @ 2008-05-23 12:15 重歸本壘(Bing) 閱讀(13736) | 評論 (13)編輯 收藏
     

    如果你從事與數據庫相關的工作,有可能會涉及到將數據從外部數據文件插入倒SQL Server的操作。本文將為大家演示如何利用BULK INSERT命令來導入數據,并講解怎樣通過改變該命令的一些選項以便更方便且更有效地插入數據。


      如果你從事與數據庫相關的工作,有可能會涉及到將數據從外部數據文件插入倒SQL Server的操作。本文將為大家演示如何利用BULK INSERT命令來導入數據,并講解怎樣通過改變該命令的一些選項以便更方便且更有效地插入數據。

      BULK INSERT

      在SQL Server中,BULK INSERT是用來將外部文件以一種特定的格式加載到數據庫表的T-SQL命令。該命令使開發人員能夠直接將數據加載到數據庫表中,而不需要使用類似于Integration Services這樣的外部程序。雖然BULK INSERT不允許包含任何復雜的邏輯或轉換,但能夠提供與格式化相關的選項,并告訴我們導入是如何實現的。BULK INSERT有一個使用限制,就是只能將數據導入SQL Server。

      插入數據

      下面的例子能讓我們更好的理解如何使用BULK INSERT命令。首先,我們來創建一個名為Sales的表,我們將要把來自文本文件的數據插入到這個表中。

      CREATE TABLE [dbo].[Sales]
      (
      [SaleID] [int],
      [Product] [varchar](10) NULL,
      [SaleDate] [datetime] NULL,
      [SalePrice] [money] NULL
      )

      當我們使用BULK INSERT命令來插入數據時,不要啟動目標表中的觸發器,因為觸發器會減緩數據導入的進程。

      在下一個例子中,我們將在Sales表上創建觸發器,用來打印插入到表中的記錄的數量。

      CREATE TRIGGER tr_Sales
      ON Sales
      FOR INSERT
      AS
      BEGIN
      PRINT CAST(@@ROWCOUNT AS VARCHAR(5)) + ' rows Inserted.'
      END

      這里我們選擇文本文件作為源數據文件,文本文件中的值通過逗號分割開。該文件包含1000條記錄,而且其字段和Sales表的字段直接關聯。由于該文本文件中的值是由逗號分割開的,我們只需要指定FIELDTERMINATOR即可。注意,當下面這條語句運行時,我們剛剛創建的觸發器并沒有啟動:

      BULK INSERT Sales FROM 'c:SalesText.txt' WITH (FIELDTERMINATOR = ',')

      當我們要的數據量非常大時,有時候就需要啟動觸發器。下面的腳本使用了FIRE_TRIGGERS選項來指明在目標表上的任何觸發器都應當啟動:

      BULK INSERT Sales FROM 'c:SalesText.txt' WITH (FIELDTERMINATOR = ',', FIRE_TRIGGERS)

      我們可以使用BATCHSIZE指令來設置在單個事務中可以插入到表中的記錄的數量。在前一個例子中,所有的1000條記錄都在同一個事務中被插入到目標表里。下面的例子,我們將BATCHSIZE參數設置為2,也就是說要對該表執行500次獨立的插入事務。這也意味著啟動500次觸發器,所以將有500咯打印指令輸出到屏幕上。

      如果你從事與數據庫相關的工作,有可能會涉及到將數據從外部數據文件插入倒SQL Server的操作。本文將為大家演示如何利用BULK INSERT命令來導入數據,并講解怎樣通過改變該命令的一些選項以便更方便且更有效地插入數據。

     

      BULK INSERT Sales FROM 'c:SalesText.txt' WITH (FIELDTERMINATOR = ',', FIRE_TRIGGERS, BATCHSIZE = 2)

      BULK INSERT不僅僅可以應用于SQL Server 2005的本地映射驅動器。下面的語句將告訴我們如何從名為FileServer的服務器的D盤中將SalesText文件的數據導入。

      BULK INSERT Sales FROM 'FileServerD$SalesText.txt' WITH (FIELDTERMINATOR = ',')

      有時候,我們在執行導入操作以前,最好能先查看一下將要輸入的數據。下面的語句在使用BULK命令時,使用了OPENROWSET函數,以便從SalesText文本文件中讀取源數據。該語句同時還需要使用一個格式文件(此處沒有列出文件的具體內容)來表明該文本文件中的數據格式。

      SELECT *
      FROM OPENROWSET(BULK 'c:SalesText.txt' ,
      FORMATFILE='C:SalesFormat.Xml'
      ) AS mytable;
      GO

     


     

    posted @ 2008-05-14 10:00 重歸本壘(Bing) 閱讀(1741) | 評論 (0)編輯 收藏
     
    一用我們的頁面跳轉都使用,window.location.reload()。
    但在firefox,opera這樣不行,替代使用window.location.href="";就可以了


    ---------------------------------------------------------------------
    天行鍵,君子當自強不息
    posted @ 2008-04-30 11:12 重歸本壘(Bing) 閱讀(5585) | 評論 (4)編輯 收藏
    僅列出標題
    共12頁: 上一頁 1 2 3 4 5 6 7 8 9 下一頁 Last 
     
    Web Page Rank Icon
    主站蜘蛛池模板: 久久免费国产视频| 国产美女无遮挡免费视频| 亚洲精品免费在线观看| 亚洲精品在线视频| WWW亚洲色大成网络.COM| www免费黄色网| 四虎成年永久免费网站| 午夜亚洲AV日韩AV无码大全| 亚洲国产午夜精品理论片 | 男人扒开添女人下部免费视频 | 天堂亚洲免费视频| 亚洲乱码无码永久不卡在线| 亚洲毛片免费视频| 特级毛片A级毛片100免费播放| 在线观看免费国产视频| 美女被免费网站视频在线| 亚洲精品tv久久久久| 青青操视频在线免费观看| 亚洲av之男人的天堂网站| 99re免费在线视频| 亚洲香蕉久久一区二区| 国产自国产自愉自愉免费24区| 亚洲人成网7777777国产| 在线亚洲高清揄拍自拍一品区| 阿v视频免费在线观看| 国产成人精品久久亚洲高清不卡 | 两个人看的www免费高清| 国产伦一区二区三区免费| 亚洲精品mv在线观看| 成人免费午间影院在线观看| 老汉色老汉首页a亚洲| 一本岛高清v不卡免费一三区| 亚洲国产综合精品中文第一区| 中文字幕天天躁日日躁狠狠躁免费| 亚洲午夜一区二区电影院| 国产真实伦在线视频免费观看| 三上悠亚在线观看免费| 亚洲国产美女在线观看| 亚洲福利中文字幕在线网址| 亚洲成a人片在线观看天堂无码| 亚洲另类少妇17p|