Postgres Fehler sehen (plpgsql bereits vorhanden / Funktion array_accum bereits vorhanden ist) in Rails-Anwendung log
-
23-08-2019 - |
Frage
ich ständig sehe die folgenden Postgres Fehler / Warnungen in meinem Rails-Entwicklung Protokoll. Es verursacht nicht meine app zum Scheitern verurteilt (hoffe ich). Jede Idee, was könnte sie verursachen? Was kann ich tun, dies zu debuggen?
Eingebaut in meinem PC:
- Rubin 1.8.7 (2008-08-11 Patchlevel 72) [i486-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
Lösung
Sie brauchen nichts zu tun. Es sieht aus wie Rails sind nur eine plpgsql Sprache zu installieren versuchen, die bereits installiert ist, und erstellen Sie eine Funktion, dass Ihre Version von PostgreSQL bereits hat.
Schienen sind darauf vorbereitet und nur diese Fehler ignorieren. Kein gutes Programmierbeispiel, aber nichts zu befürchten.
Andere Tipps
Ich erkannte, dass dieser Fehler für mich kam wegen meiner Fehler
- sank Testdatenbank
- erstellt neue Testdatenbank
- Liste item versuchte umgekehrt bei dem Versuch, Struktur der Entwicklung Datenbank zu migrieren zu testen
Nebenwirkungen von langen Arbeitszeit;)