debian – 如何解决此区域设置问题?

我正在设置一个Docker构建,允许我从Linux连接到SQL Server.据我所知,这个问题几乎与此问题无关,但可能会因为我很困惑!

因为Debian很小而且很轻,所以我将我的图像基于Debian.我怀疑我缺少一些语言环境的东西,这就是导致这种情况的原因,但我不知道.

无论如何,这是我的命令错误:

$perl -MDBI -MData::Dumper -E'say Dumper(DBI->connect("dbi:ODBC:server=10.6.6.17;port=1433;database=Lynx;driver=ODBC Driver 11 for SQL Server;uid=sa;pwd=password")->selectall_arrayref("SELECT * FROM Setup"))'
terminate called after throwing an instance of 'std::runtime_error'
  what():  locale::facet::_S_create_c_locale name not valid

对我来说,这看起来像一个C错误,可能与SQL Server ODBC驱动程序有关;它可能是C.

我试过了:

>导出LC_ALL = C.
>导出LC_ALL = C.UTF-8
> export LC_ALL = en_US.UTF-8
> export LC_ALL = en_US
> export LC_ALL = POSIX
> apt-get install locales
> locale-gen

并取得了零进展.有任何想法吗?

附录:以下是我的实际Dockerfile;它肯定是不完整的,可以使用一些爱,但它可能会帮助你重现这个错误(注意我的命令中的连接字符串将需要调整,最终指向一个真正的SQL Server,但不要重现这个问题.)

FROM perl:5.20.1

RUN wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.2.tar.gz && \
    tar xf unixODBC-2.3.2.tar.gz                                   && \
    cd /root/unixODBC-2.3.2                                        && \
    ./configure --disable-gui --disable-drivers --enable-stats=no --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE && \
    make                                                           && \
    make install                                                   && \
    echo "include /usr/local/lib" >> /etc/ld.so.conf               && \
    ldconfig

RUN ln -s /usr/local/lib/libodbc.so.2 /usr/lib/libodbc.so.1          && \
    ln -s /usr/local/lib/libodbccr.so.2 /usr/lib/libodbccr.so.1      && \
    ln -s /usr/local/lib/libodbcinst.so.2 /usr/lib/libodbcinst.so.1  && \
    ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 /usr/lib/libssl.so.10                        && \
    ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /usr/lib/libcrypto.so.10

RUN wget http://download.microsoft.com/download/B/C/D/BCDD264C-7517-4B7D-8159-C99FC5535680/RedHat6/msodbcsql-11.0.2270.0.tar.gz && \
    tar xf msodbcsql-11.0.2270.0.tar.gz && \
    cd /root/msodbcsql-11.0.2270.0      && \
    bash install.sh install --force --accept-license

RUN wget https://cpan.metacpan.org/authors/id/M/MJ/MJEVANS/DBD-ODBC-1.50.tar.gz && \
    tar xf DBD-ODBC-1.50.tar.gz && \
    cd /root/DBD-ODBC-1.50      && \
    perl Makefile.PL -u         && \
    cpanm --installdeps .       && \
    make                        && \
    make test                   && \
    make install
最佳答案
我想到了!

我需要按照以下步骤操作:

export DEBIAN_FRONTEND=noninteractive
apt-get install locales
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
locale-gen

然后其余的工作!

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...