The official word from the CakePHP team is that "CakePHP does not
support ntext fields". You're stuck using the text casting hack. I'm
using MS SQL myself, and have had to use it, unfortunately.
I'm using 1.2 RC2 and have successfully gotten that same hack to work
- you have to change it a bit to work with the changes introduced in
RC1. Here's my version of the fields function from RC2:
function fields(&$model, $alias = null, $fields = array(), $quote =
true) {
if (empty($alias)) {
$alias = $model->alias;
}
$fields = parent::fields($model, $alias, $fields, false);
$count = count($fields);
$fieldDescription = $this->describe($model);
if ($count >= 1 && $fields[0] != '*' && strpos($fields[0],
'COUNT(*)') === false) {
for ($i = 0; $i < $count; $i++) {
$prepend = '';
if (strpos($fields[$i], 'DISTINCT') !== false) {
$prepend = 'DISTINCT ';
$fields[$i] =
trim(str_replace('DISTINCT', '', $fields[$i]));
}
$fieldAlias = count($this->__fieldMappings);
if (!preg_match('/\s+AS\s+/i', $fields[$i])) {
if (strpos($fields[$i], '.') === false)
{
$this->__fieldMappings[$alias .
'__' . $fieldAlias] = $alias .
'.' . $fields[$i];
if
($fieldDescription[$fields[$i]]['type'] == 'xml') {
$fieldName =
"CAST(CAST(".$this->name($alias . '.' .
$fields[$i])." AS VARCHAR(8000)) AS TEXT)";
} else {
$fieldName =
$this->name($alias . '.' . $fields[$i]);
}
$fieldAlias =
$this->name($alias . '__' . $fieldAlias);
} else {
$build = explode('.',
$fields[$i]);
$this->__fieldMappings[$build[0] . '__' . $fieldAlias] =
$fields[$i];
$fieldName =
$this->name($build[0] . '.' . $build[1]);
$fieldAlias =
$this->name(preg_replace("/^\[(.+)\]$/", "$1",
$build[0]) . '__' . $fieldAlias);
}
if ($model->getColumnType($fields[$i])
== 'datetime') {
$fieldName =
"CONVERT(VARCHAR(20), {$fieldName}, 20)";
}
$fields[$i] = "{$fieldName} AS
{$fieldAlias}";
}
$fields[$i] = $prepend . $fields[$i];
}
}
return $fields;
}
On Jul 10, 9:59 am, bitkidoku <[EMAIL PROTECTED]> wrote:
> Hi everyone,
>
> I have a problem using my existing MSSQL DB. I get the following
> error:
> "SQL Error: 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. [CORE\cake\libs\model\datasources
> \dbo_source.php, line 512]"
>
> I encountered this error before while writing my own PHP code. It can
> be 'solved' casting ntext field to text. The closest solution for
> CakePHP I found is this:https://trac.cakephp.org/ticket/4287
>
> But since that applies to 1.2.0.6311 I couldn't make it work at the
> moment.
>
> Does anyone have any idea resolving this issue?
> Thanks in advance :)
>
> PS: Why do I insist on using MSSQL? Well, that is another story... I
> am not very happy about that but I have to.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---