Can only flip STRING and INTEGER values! в функции DrupalDefaultEntityController->load()

Главные вкладки

Аватар пользователя pio pio 25 февраля 2011 в 19:04
1

Господа, вот такой отчет об ошибке, что характерно, исключительно в блоге, что это и как победить, кто в курсе?

гугл выдает только мою же страницу, которую проиндексировал с этой ошибкой.

заранее спасибо.

Комментарии

Аватар пользователя pio pio 28 февраля 2011 в 15:29

* Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! в функции DrupalDefaultEntityController->load() (строка 178 в файле /home/gameremi/public_html/includes/entity.inc).

* Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! в функции DrupalDefaultEntityController->cacheGet() (строка 354 в файле /home/gameremi/public_html/includes/entity.inc).

Аватар пользователя pio pio 28 февраля 2011 в 15:37

убрал записи из блога ошибка изчезла, но появилась в другом месте. к форме регистрации было добавлено дополнительное обязательное поле (text-список), куда записаны несколько строк данных. суть в том, что друпал почему-то не формирует новую таблицу для этих записей, а формирует массив, записывая полностью весь массив в одну ячейку таблицы базы.

после этого и начинаются проблемы, т.к. функция [function.array-flip] не может, почему-то, корректно работать с полученными данными.

мораль, нужно либо научить функцию работать со всем, с чем только можно, либо как-то изменить принципы записи данных в базу друпала.

почему данные не пишутся напрямую в таблицы, а сначала пишутся в массив, а затем уже в базу?
как можно заставить cms писать данные напрямую?

Аватар пользователя petrovnn petrovnn 30 июня 2012 в 15:12

У меня эта ошибка возникла после миграции с drupal 6 на 7. Пока не решил. Появляется на всех страницах одного типа материала, где много полей.

Полный текст ошибки у меня такой

Warning: array_flip() [function.array-flip]:
Can only flip STRING and INTEGER values! in DrupalDefaultEntityController->load()
(line 178 of C:\server_os\domains\bm\www\includes\entity.inc).
Аватар пользователя petrovnn petrovnn 30 июня 2012 в 15:52

В общем ошибка возникала из-за того что одно поле CCK как-то криво мигрировалось. Это поле "изображение" (единичное). После удаления поля ошибка исчезла. Кстати, определить в чем причина мне помог следующий кейс:

в файле \includes\entity.inc

перед той строкой, на которой происходит ошибка, я вывел массив:

    print '<pre>';
    print_r($ids);

Содержимое которого ясно дало мне понять где ошибка. Почитал в гугле - причин возникновения данной ошибки великое множество, поэтому если не сделать распечатку массива можно гадать очень долго. Может кому пригодится, кто найдет этот пост через гугл, как и я

Аватар пользователя psyh psyh 11 июня 2014 в 20:54

Вписал я print_r($ids);
Что я должен увидеть? Совпадение значений ключей?
Вижу у себя большую пачку:
Array
(
[0] => 148
)

Array
(
[0] => 148
)
и т.д.

И как понять где проблема?
Что за значение 148?

Это как в "Путеводителе по Галактике". Есть ответ 148. Только бы еще знать на какой вопрос он отвечает )

Аватар пользователя yavasilek yavasilek 23 апреля 2015 в 17:39

Открываем файлик includes/entity.inc
находим строку(175)
<?php$passed_ids = !empty($ids) ? array_flip($ids) : FALSE;?>
меняем на
<?php$passed_ids = !empty($ids) ? ( !in_array(NULL, $ids) ? array_flip($ids) : FALSE ) : FALSE;?>