2009-05-20 9 views
0

我經常在Rails開發日誌中看到以下postgres錯誤/警告。這不會導致我的應用程序失敗(我希望)。任何想法可能會導致他們?我能做些什麼來調試呢?在Rails應用日誌中看到Postgres錯誤(plpgsql已存在/ function array_accum已存在)

安裝在我的PC: - 紅寶石1.8.7(2008-08-11 PATCHLEVEL 72)[1486-的linux]
- 的Rails 2.2.2
- 的PostgreSQL 8.3.7

[4;36;1mSQL (0.1ms)[0m [0;1mSET client_min_messages TO 'panic'[0m 
    [4;35;1mSQL (0.1ms)[0m [0mSET client_min_messages TO 'notice'[0m 
    [4;36;1mSQL (0.7ms)[0m [0;1mSELECT version FROM schema_migrations[0m 
DEPRECATION WARNING: ActionMailer::Base.register_template_extension has been deprecated.Use ActionView::Base.register_template_extension instead. (called from /home/gsmendoza/workspace/idea/georgemendoza/config/environment.rb:104) 
    [4;35;1mSQL (0.2ms)[0m [0mbegin[0m 
    [4;36;1mSQL (0.1ms)[0m [0;1msavepoint ts[0m 
    [4;35;1mSQL (0.0ms)[0m [0mPGError: ERROR: function "array_accum" already exists with same argument types 
: CREATE AGGREGATE array_accum (anyelement) 
(
sfunc = array_append, 
stype = anyarray, 
initcond = '{}' 
); 
[0m 
    [4;36;1mSQL (0.1ms)[0m [0;1mrollback to savepoint ts[0m 
    [4;35;1mSQL (0.1ms)[0m [0mrelease savepoint ts[0m 
    [4;36;1mSQL (0.1ms)[0m [0;1mcommit[0m 
    [4;35;1mSQL (0.1ms)[0m [0mbegin[0m 
    [4;36;1mSQL (0.1ms)[0m [0;1msavepoint ts[0m 
    [4;35;1mSQL (0.0ms)[0m [0mPGError: ERROR: language "plpgsql" already exists 
: CREATE LANGUAGE 'plpgsql';[0m 
    [4;36;1mSQL (0.1ms)[0m [0;1mrollback to savepoint ts[0m 
    [4;35;1mSQL (0.1ms)[0m [0mrelease savepoint ts[0m 
    [4;36;1mSQL (0.1ms)[0m [0;1mcommit[0m 
    [4;35;1mSQL (0.1ms)[0m [0mbegin[0m 
    [4;36;1mSQL (0.1ms)[0m [0;1msavepoint ts[0m 
    [4;35;1mSQL (2.6ms)[0m [0m CREATE OR REPLACE FUNCTION crc32(word text) 
RETURNS bigint AS $$ 
DECLARE tmp bigint; 
DECLARE i int; 
DECLARE j int; 
DECLARE word_array bytea; 
BEGIN 
i = 0; 
tmp = 4294967295; 
word_array = decode(replace(word, E'\\', E'\\\\'), 'escape'); 
LOOP 
tmp = (tmp # get_byte(word_array, i))::bigint; 
i = i + 1; 
j = 0; 
LOOP 
tmp = ((tmp >> 1) # (3988292384 * (tmp & 1)))::bigint; 
j = j + 1; 
IF j >= 8 THEN 
EXIT; 
END IF; 
END LOOP; 
IF i >= char_length(word) THEN 
EXIT; 
END IF; 
END LOOP; 
return (tmp # 4294967295); 
END 
$$ IMMUTABLE STRICT LANGUAGE plpgsql; 
[0m 
    [4;36;1mSQL (0.1ms)[0m [0;1mrelease savepoint ts[0m 
    [4;35;1mSQL (0.8ms)[0m [0mcommit[0m 

回答

0

你不需要做任何事情。它看起來像Rails只是試圖安裝一個已經安裝的plpgsql語言,並且創建一個你的PostgreSQL版本已經有的函數。

Rails爲此做好了準備,並忽略這些錯誤。不是一個好的編程例子,但沒有什麼可擔心的。

0

我意識到這個錯誤來到了我,因爲我的錯

  1. 回落測試數據庫
  2. 創建新的測試數據庫
  3. 列表項試圖反之亦然,而試圖遷移開發數據庫的結構測試的工作時間長

副作用;)