En essayant d'installer opennms:
/usr/share/opennms/bin/install -l /usr/local/lib -dis
Je reçois l'erreur:
ERREUR: le codage UTF8 ne correspond pas à l'environnement local en_US Détails: Le paramètre choisi pour LC_CTYPE nécessite le codage LATIN1.
et je ne suis pas sûr de savoir comment procéder car j'ai essayé de créer la base de données de différentes manières (voir ci-dessous).
Journal complet:
==============================================================================
OpenNMS Installer
==============================================================================
Configures PostgreSQL tables, users, and other miscellaneous settings.
- searching for jicmp:
- trying to load /usr/local/lib/libjicmp.so: NO
- trying to load /usr/lib/jni/libjicmp.so: OK
- searching for jicmp6:
- trying to load /usr/local/lib/libjicmp6.so: NO
- trying to load /usr/lib/jni/libjicmp6.so: OK
- searching for jrrd:
- trying to load /usr/local/lib/libjrrd.so: NO
- trying to load /usr/lib/jni/libjrrd.so: NO
- trying to load /usr/lib/jni/libjrrd.so: NO
- trying to load /usr/lib/jvm/jdk1.6.0_34/jre/lib/AMD64/server/libjrrd.so: NO
- trying to load /usr/lib/jvm/jdk1.6.0_34/jre/lib/AMD64/libjrrd.so: NO
- trying to load /usr/lib/jvm/jdk1.6.0_34/jre/../lib/AMD64/libjrrd.so: NO
- trying to load /libjrrd.so: NO
- trying to load /usr/share/opennms/lib/libjrrd.so: NO
- trying to load /usr/share/opennms/lib/linux64/libjrrd.so: NO
- trying to load /usr/Java/packages/lib/AMD64/libjrrd.so: NO
- trying to load /usr/lib64/libjrrd.so: NO
- trying to load /lib64/libjrrd.so: NO
- trying to load /lib/libjrrd.so: NO
- trying to load /usr/lib/libjrrd.so: NO
- trying to load /usr/lib/jni/libjrrd.so: NO
- trying to load /usr/lib/libjrrd.so: NO
- trying to load /usr/local/lib/libjrrd.so: NO
- trying to load /opt/NMSjicmp/lib/32/libjrrd.so: NO
- trying to load /opt/NMSjicmp/lib/64/libjrrd.so: NO
- trying to load /opt/NMSjicmp6/lib/32/libjrrd.so: NO
- trying to load /opt/NMSjicmp6/lib/64/libjrrd.so: NO
- Failed to load the optional jrrd library.
- This error is not fatal, since jrrd is only required for optional features.
- For more information, see http://www.opennms.org/index.php/jrrd
- using SQL directory... /usr/share/opennms/etc
- using create.sql... /usr/share/opennms/etc/create.sql
* using 'postgres' as the PostgreSQL user for OpenNMS
* using 'opennms' as the PostgreSQL database name for OpenNMS
Exception in thread "main" org.opennms.core.schema.MigrationException: an error occurred creating the OpenNMS database
at org.opennms.core.schema.Migrator.createDatabase(Migrator.Java:428)
at org.opennms.core.schema.Migrator.prepareDatabase(Migrator.Java:444)
at org.opennms.install.Installer.install(Installer.Java:236)
at org.opennms.install.Installer.main(Installer.Java:949)
Caused by: org.postgresql.util.PSQLException: ERROR: encoding UTF8 does not match locale en_US
Detail: The chosen LC_CTYPE setting requires encoding LATIN1.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.Java:2102)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.Java:1835)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.Java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.Java:500)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.Java:374)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.Java:366)
at org.opennms.core.schema.Migrator.createDatabase(Migrator.Java:425)
... 3 more
Liste des bases de données:
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
postgres | postgres | LATIN1 | en_US | en_US |
rhq | rhqadmin | LATIN1 | en_US | en_US |
template0 | postgres | LATIN1 | en_US | en_US | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | LATIN1 | en_US | en_US | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
J'ai utilisé les 3 options initdb suivantes mais aucune d'entre elles ne fonctionne
/usr/local/pgsql/bin/initdb -E UTF-8 --pgdata=/usr/local/pgsql/data
/usr/local/pgsql/bin/initdb -E LATIN1 --pgdata=/usr/local/pgsql/data
/usr/local/pgsql/bin/initdb -E en_US.UTF8 --pgdata=/usr/local/pgsql/data
Aussi, dois-je supprimer toutes les données dans /usr/local/pgsql/data
avant d'utiliser initdb
?
ajout de la commande locale locale stdout:
$ locale
LANG=en_US
LANGUAGE=en_US:
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=
Merci pour la sortie locale
. OpenNMS semble utiliser vos paramètres régionaux en_US (non UTF-8) pour créer la base de données Postgres, ce qui est faux. Cela devrait fonctionner:
export LANG=en_US.UTF-8
locale # confirm that it shows only en_US.UTF-8 for all settings
# finally, run your opennms installer
/usr/share/opennms/bin/install -l /usr/local/lib -dis
Je réponds à cela parce que rien de StackOverFlow n'a fonctionné pour moi.
J'ai combiné deux solutions d'autres sites qui ont fait le travail (cette réponse fonctionne pour le serveur Ubuntu 12.04 et PGSQL 9.1):
nano /etc/profile.d/lang.sh
export LANGUAGE="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
Sudo su postgres
psql
update pg_database set datistemplate=false where datname='template1';
drop database Template1;
create database template1 with owner=postgres encoding='UTF-8'
lc_collate='en_US.utf8' lc_ctype='en_US.utf8' template template0;
update pg_database set datistemplate=true where datname='template1';
J'espère que ça aide ;)
Cela se produit parce que votre système est configuré pour utiliser le codage Latin1 au lieu de UTF-8. Votre langue est correctement définie sur en_US, mais le codage n'est pas défini sur UTF-8. Essayez de lancer ceci: $
localedef -v -c -i en_US -f UTF-8 en_US.UTF-8
Cela indiquera à toutes vos applications installées après le changement (je pense) d’utiliser la langue anglaise avec le codage Unicode. Plus d'informations peuvent être trouvées ici: https://www.linux.com/learn/docs/ldp/790-Unicode-HOWTO#s3
J'ai eu un problème similaire alors j'ai:
et puis postregsql a su se configurer pour utiliser la langue anglaise avec le codage Unicode.
Bien sûr, vous pouvez le faire par base de données, comme décrit ici: http://www.postgresql.org/docs/9.1/static/multibyte.html
cela a fonctionné pour moi:
CREATE DATABASE mydb WITH ENCODING='UTF8' LC_CTYPE='en_US.UTF-8' LC_COLLATE='en_US.UTF-8' OWNER=postgres TEMPLATE=template0 CONNECTION LIMIT=-1;
Modifiez les paramètres régionaux et les langues de SO pour assurer la compatibilité avec BD.
prendre plaisir!
Je rencontre l'erreur similaire. L'ancienne base de données LC_CTYPE est UTF-8, mais la nouvelle est en_US.UTF-8, je résous le problème après la réinitialisation de la base de données.
initdb --pgdata=/path/to/postgresql -E utf8
Vous devriez choisir le bon paramètre -E
J'ai eu le "même problème" lors de l'installation de odoo. Il s'avère qu'avant d'installer odoo, vous devez configurer les paramètres régionaux
export LC_CTYPE="en_US.UTF-8"
Sudo dpkg-reconfigure locales
Et puis, configurez les paramètres régionaux avec UTF-8 MAIS vous devez configurer les paramètres régionaux avant l’installation de posgres.