Symfony2和sqlite,SQLSTATE [HY000]被捕获

时间:2013-04-13 05:35:03

标签: sqlite symfony

我正在尝试将sqlite3与symfony2一起使用。 这是app / config / parameters.yml

中的数据库配置
parameters:
database_driver: pdo_sqlite
database_host: 127.0.0.1
database_port: null
database_name: librarian
database_user: root
database_password: null
database_path: librarian

我的app / config / config.yml

# Doctrine Configuration
doctrine:
dbal:
    driver:   %database_driver%
    host:     %database_host%
    port:     %database_port%
    dbname:   %database_name%
    user:     %database_user%
    password: %database_password%
    charset:  UTF8
    path: %kernel.root_dir%/%database_path%.db

orm:
    auto_generate_proxy_classes: %kernel.debug%
    auto_mapping: true

我已经创建了一个简单的表来进行一些测试。该表有一个整数自动增量'id'字段,'link'文本字段和'index'整数字段。

控制器很简单:

class testController extends Controller {

  public function indexAction() {
    $issue = new Issue();
    $issue->setIndex(0);
    $issue->setLink(array('http://example.com'));

    $em = $this->getDoctrine()->getManager();
    $em->persist($issue);
    $em->flush();

    return $this->render('TestLibrarianBundle:Test:index.html.twig');
  }
}

当我尝试通过调用此控制器来执行请求时,出现以下错误:

request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\DBALException: "An exception  occurred while executing 'INSERT INTO issue (index, link) VALUES (?, ?)':

SQLSTATE[HY000]: General error: 1 near "index": syntax error" at /.../.../vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php line 47

有关如何解决此问题的任何提示?

由于

2 个答案:

答案 0 :(得分:0)

如果字段索引是sqlite关键字,可以命名吗?

答案 1 :(得分:0)

您的问题是INDEXSQL keyword

如果您无法将ORM配置为正确转义名称(将其写为"index"),则必须将字段名称更改为其他名称。