###前提・実現したいこと
現在SQLserver2008へDBをつなごうと思っているのですが、encodingErrorとなっており困っています。
※別に上げたほうが回答が早く得られると思い、別途質問を上げさせていただいております。
以下別途上げている質問です。
https://teratail.com/questions/39752
###発生している問題・エラーメッセージ
Error: SQLSTATE[IMSSP]: An invalid encoding was specified for SQLSRV_ATTR_ENCODING.
###多分、該当のソースコード
\vendor\cakephp\cakephp\src\Database\Driver\Sqlserver.php
※Composerで作成したときより変更していません。
php
1/** 2 * SQLServer driver. 3 */ 4class Sqlserver extends Driver 5{ 6 7 use PDODriverTrait; 8 use SqlserverDialectTrait; 9 10 /** 11 * Base configuration settings for Sqlserver driver 12 * 13 * @var array 14 */ 15 protected $_baseConfig = [ 16 'persistent' => false, 17 'host' => 'localhost\SQLEXPRESS', 18 'username' => '', 19 'password' => '', 20 'database' => 'cake', 21 // PDO::SQLSRV_ENCODING_UTF8 22 'encoding' => 65001, 23 'flags' => [], 24 'init' => [], 25 'settings' => [], 26 ]; 27 28 /** 29 * Establishes a connection to the database server 30 * 31 * @return bool true on success 32 */ 33 public function connect() 34 { 35 if ($this->_connection) { 36 return true; 37 } 38 $config = $this->_config; 39 $config['flags'] += [ 40 PDO::ATTR_PERSISTENT => $config['persistent'], 41 PDO::ATTR_EMULATE_PREPARES => false, 42 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 43 ]; 44 45 if (!empty($config['encoding'])) { 46 $config['flags'][PDO::SQLSRV_ATTR_ENCODING] = $config['encoding']; 47 } 48 49 $dsn = "sqlsrv:Server={$config['host']};Database={$config['database']};MultipleActiveResultSets=false"; 50 $this->_connect($dsn, $config); 51 52 $connection = $this->connection(); 53 if (!empty($config['init'])) { 54 foreach ((array)$config['init'] as $command) { 55 $connection->exec($command); 56 } 57 } 58 if (!empty($config['settings']) && is_array($config['settings'])) { 59 foreach ($config['settings'] as $key => $value) { 60 $connection->exec("SET {$key} {$value}"); 61 } 62 } 63 return true; 64 } 65
###試したこと
'encoding' => 65001,の箇所を'encoding' => 2024,(Windows-31J)に変更してみましたが同様のエラーが発生しました。
ついでに'encoding' => 932(SIFT_JIS)もだめでした。
修正する場所が悪いのでしょうか?
###補足情報(言語/FW/ツール等のバージョンなど)
cakephp3/sqlserver2008
DBはutf-8となっております。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。