【发布时间】:2021-03-14 22:00:11
【问题描述】:
我使用这张图片:
image: sflyr/sqlplus:latest
还有这个脚本(gitlab-ci):
script:
- |
/instantclient_11_2/sqlplus login/pwd@//myserveur.prod:1521/sid.mysid<<EOF
@myscript.sql
EOF
myscript.sql:
select 'é' from dual;
结果:
SQL> SQL>
'?
--
??
存在编码问题...
我尝试将这个添加到脚本中来修复它,但它不起作用:
script:
- apt-get update && apt-get install locales
- apt-get update
- dpkg-reconfigure locales
- locale-gen
- export LANG=en_US.UTF-8
- locale
- |
/instantclient_11_2/sqlplus login/pwd@//myserveur.prod:1521/sid.mysid <<EOF
@myscript.sql
EOF
结果:
$ locale-gen
Generating locales (this might take a while)...
Generation complete.
$ export LANG=en_US.UTF-8
$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
locale: $ /instantclient_11_2/sqlplus login/pwd@//myserveur.prod:1521/sid.mysid <<EOF # collapsed multi-line command
Cannot set LC_ALL to default locale: No such file or directory
SQL*Plus: Release 11.2.0.3.0 Production on Sun Mar 14 21:47:41 2021
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connecte a :
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
SQL> SQL>
'?
--
??
关于如何解决这个问题的任何想法?
【问题讨论】:
-
如答案所示设置 NLS_LANG 应该会有所帮助。顺便说一句,我强烈建议获取更新版本的 SQL*Plus。查看 Oracle 的 Dockerfiles github.com/oracle/docker-images/tree/main/OracleInstantClient 即使是最新版本 (21.1) 也会连接到您的 12.2 数据库。如果您想继续使用基于 Debian 的 Linux 发行版,另请参阅 blogs.oracle.com/opal/…。
标签: oracle docker gitlab-ci sqlplus instantclient