0

我的代码:

引导程序.php

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Annotations\AnnotationRegistry;

$paths = array(dirname(__FILE__)."/entities");
require_once __DIR__ . '/entities/Users.php';

$isDevMode = false;
// the connection configuration
$dbParams = array(
    'driver'   => 'pdo_mysql',
    'user'     => 'root',
    'password' => 'pass',
    'dbname'   => 'p1db',
);

$config = Setup::createConfiguration($isDevMode);
$driver = new AnnotationDriver(new AnnotationReader(), $paths);

// registering noop annotation autoloader - allow all annotations by default
AnnotationRegistry::registerLoader('class_exists');
$config->setMetadataDriverImpl($driver);
$config->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger());

$em = EntityManager::create($dbParams, $config);

测试.php

<?php 
include 'bootstrap.php';
....
 try {
     $user = new Users();
     $user->setName($_POST['name']);
     $user->setEmail($_POST['email']);
     $user->setPassword(sha1($_POST['password'] . $_SALT_));
     $user->setPhone($_POST['phone']);
     $em->persist($user);
     $em->flush();
 } catch (Exception $e) {
     $em->getConnection()->rollback();
     $em->close();
     throw $e;
 }

我不明白为什么它不起作用。当它运行时,$em->flush()我的页面冻结了 3-4 秒,然后Error 103 (net::ERR_CONNECTION_ABORTED): Unknown error 我在这里做了一些调试。我设置了 mysql 日志记录,这是执行上述代码后 MySQL 日志中的内容:

   13 Query START TRANSACTION
   13 Query INSERT INTO users (email, password, name, added_date, phone) VALUES ('foo@example.com', 'ec4cea0c00610c486f52e62e2850fa7e8b95fb04', 'test name', NULL, '5555555')

如果我在 MySQL shell 中执行此查询 - 它们工作正常。我发现问题出在\Doctrine\ORM\UnitOfWork->commit(),就行了$conn->beginTransaction();beginTransaction()在这里定义\Doctrine\DBAL\Driver\Connection->beginTransaction() 但这只是一个接口......我不知道这里发生了什么。

MySQL v 5.1.48,pdo_mysql

PDO Driver for MySQL    enabled
Client API version  mysqlnd 5.0.8-dev - 20102224 - $Revision: 308673 $
4

0 回答 0