Доктрина миграции. Windows-> Linux, MySQL 5.5-> MySQL 5.1 - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть программа доктрины, которая отлично работает на моей машине для разработки, но когда я перемещаю ее на свой сервер, она перестает работать. Основные различия между этими двумя машинами заключаются в том, что одна из них - это windows и работает mySql 5.5, а другая - linux под MySQL 5.1.

Я обнаружил ошибку в строке $ this-> entityManager-> createNativeQuery ($ dql, $ rsm), так как послесловие оператора log никогда не происходит.

get_log()->logDebug("query: ".$dql);
$rsm = new ResultSetMappingBuilder($this->entityManager);
get_log()->logDebug("ResultSetMappingBuilder");

var_dump($rsm);
$rsm->addRootEntityFromClassMetadata('D_Post', 'f');
get_log()->logDebug("addRootEntityFromClassMetadata");
$query = $this->entityManager->createNativeQuery($dql, $rsm);
get_log()->logDebug("createNativeQuery");

sql, который работает

SELECT * FROM (SELECT DISTINCT f.ID,f.post_title, f.post_date, f.post_type,
f.views_count
as score FROM wp_vsideviewpostfilter f  ) t ORDER BY t.score DESC,t.post_title 
DESC  LIMIT 0,10 

Я могу выполнить код SQL на машине linux через обработчик запросов, и он выполняется правильно.

Есть идеи, почему эта программа не работает на другом сервере?

1 Ответ

0 голосов
/ 13 февраля 2012

В моем случае проблема была с одним из сопоставлений.Doctrine не удалось найти отображение сущности D_Post.Путь к отображению содержал смесь / и \ в нем, что разрешено в Windows, но не в Linux.

...