0

symfony2 で sqlite3 を使用しようとしています。これは 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」フィールド、「リンク」テキスト フィールド、および「インデックス」整数フィールドがあります。

コントローラーはシンプルです:

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

これを解決する方法についてのヒントはありますか?

ありがとう

4

2 に答える 2

0

sqlite キーワードの場合、フィールド インデックスに名前を付けることができますか?

于 2013-04-13T05:39:37.400 に答える
0

あなたの問題は、それINDEXSQL キーワードであることです。

名前を適切にエスケープするように ORM を構成できない場合 ("index"代わりに as を書く)、フィールド名を別のものに変更する必要があります。

于 2013-04-13T08:58:33.483 に答える