CircleCI로 Laravel + SQLServer를 구축하면 오류가 발생했습니다.
발생한 현상에
오류 내용
SQLSTATE[HY000]: General error: 4004 Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. [4004] (severity 16) [(null)] (SQL:
.circleci/config(각종 버전)
build:
docker:
- image: circleci/php:7.1-node-browsers
- image: microsoft/mssql-server-linux:2017-CU8
environment:
- ACCEPT_EULA: Y
- SA_PASSWORD: 1234abcD
steps:
- checkout # special step to check out source code to working directory
- run: sudo apt install -y zlib1g-dev ruby freetds-dev unixodbc-dev imagemagick libmagickcore-dev libmagickwand-dev apt-transport-https
- run: curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
- run: curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
- run: sudo apt update
- run: sudo ACCEPT_EULA=Y apt install -y mssql-tools unixodbc-dev
조사 방법
circleci에 ssh 로그인하여 여러가지 두드려 보자
SQLSTATE[HY000]: General error: 4004 Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. [4004] (severity 16) [(null)] (SQL:
build:
docker:
- image: circleci/php:7.1-node-browsers
- image: microsoft/mssql-server-linux:2017-CU8
environment:
- ACCEPT_EULA: Y
- SA_PASSWORD: 1234abcD
steps:
- checkout # special step to check out source code to working directory
- run: sudo apt install -y zlib1g-dev ruby freetds-dev unixodbc-dev imagemagick libmagickcore-dev libmagickwand-dev apt-transport-https
- run: curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
- run: curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
- run: sudo apt update
- run: sudo ACCEPT_EULA=Y apt install -y mssql-tools unixodbc-dev
circleci에 ssh 로그인하여 여러가지 두드려 보자
sqlcmd를 두드려보십시오
주의점
/opt/mssql-tools/bin/
에는 패스를 통해 없기 때문에 전부 두드리지 않으면 안 된다!$ /opt/mssql-tools/bin/sqlcmd
Laravel과 통신하는 freetds를 의심
우선 설치에서
$ sudo apt-get install freetds-bin
$ tsql -C
Compile-time settings (established with the "configure" script)
Version: freetds v0.91
freetds.conf directory: /etc/freetds
MS db-lib source compatibility: no
Sybase binary compatibility: yes
Thread safety: yes
iconv library: yes
TDS version: 4.2
iODBC: no
unixodbc: yes
SSPI "trusted" logins: no
Kerberos: yes
연결하여 다양한 확인
$ tsql -S 0.0.0.0 -U [hogehoge] -P [hogehoge]
locale is "C.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> select @@version
2> GO
Microsoft SQL Server 2017 (RTM-CU8) (KB4338363) - 14.0.3029.16 (X64)
Jun 13 2018 13:35:56
Copyright (C) 2017 Microsoft Corporation
Developer Edition (64-bit) on Linux (Ubuntu 16.04.4 LTS)
(1 row affected)
1> use hogehoge
2> GO
1> SELECT TOP 1 * FROM hogehoge
2> GO
Msg 4004 (severity 16, state 1) from 030843d6b223 Line 1:
"Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier."
아. freetds 주위의 설정 같네요. .
해결 방법
CircleCI에 freets에 반영하기
오류로 여기와 돈 피샤
htp //php. 네 t / 마누아 l / 그럼 / 훙 c 치온. msql 쿠에 ry. php #105843
그러므로
tds version = 8.0
client charset = UTF-8
추가해 주시면
그런 추가한 freetds.conf
를 Git에 준비
이번에는 .circleci/freetds.conf
에 준비했습니다.
사족이지만 .circleci
주위에만 사용하는 것은 .circleci
디렉토리에 모으는 경향이 있습니다. . .
build:
docker:
- image: circleci/php:7.1-node-browsers
- image: microsoft/mssql-server-linux:2017-CU8
environment:
- ACCEPT_EULA: Y
- SA_PASSWORD: 1234abcD
steps:
- checkout # special step to check out source code to working directory
- run: sudo apt install -y zlib1g-dev ruby freetds-dev unixodbc-dev imagemagick libmagickcore-dev libmagickwand-dev apt-transport-https
- run: curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
- run: curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
- run: sudo cp .circleci/freetds.conf /etc/freetds/freetds.conf
- run: sudo apt update
- run: sudo ACCEPT_EULA=Y apt install -y mssql-tools unixodbc-dev
이제 문제가 사라졌습니다.
좋았어요.
Reference
이 문제에 관하여(CircleCI로 Laravel + SQLServer를 구축하면 오류가 발생했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/gessy0129/items/963b6e166ef48ebf8847
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
tds version = 8.0
client charset = UTF-8
build:
docker:
- image: circleci/php:7.1-node-browsers
- image: microsoft/mssql-server-linux:2017-CU8
environment:
- ACCEPT_EULA: Y
- SA_PASSWORD: 1234abcD
steps:
- checkout # special step to check out source code to working directory
- run: sudo apt install -y zlib1g-dev ruby freetds-dev unixodbc-dev imagemagick libmagickcore-dev libmagickwand-dev apt-transport-https
- run: curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
- run: curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
- run: sudo cp .circleci/freetds.conf /etc/freetds/freetds.conf
- run: sudo apt update
- run: sudo ACCEPT_EULA=Y apt install -y mssql-tools unixodbc-dev
Reference
이 문제에 관하여(CircleCI로 Laravel + SQLServer를 구축하면 오류가 발생했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gessy0129/items/963b6e166ef48ebf8847텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)