2011-11-29 13 views
6


Qualcuno potrebbe dirmi come forzare Doctrine a creare tabelle di database con codifica UTF-8 e utf8_polish_ci? Il mio file di configurazione dottrina ha questi parametri di configurazione db:Doctrine 2.1 e tabelle codifica utf-8

$conn = array(
    'driver' => 'pdo_mysql', 
    'dbname' => 'test', 
    'user' => 'root', 
    'password' => '*****', 
    'charset' => 'utf8', 
    'driverOptions' => array(1002=>'SET NAMES utf8')); 

Tuttavia, è ancora la creazione di tabella con la codifica di default: latin1 e latin1_swedish_ci.

+0

Perché stai usando la dottrina per * creare * tavoli in primo luogo? Non sarebbe qualcosa che fai in qualsiasi strumento di amministrazione del database che usi? –

+7

@Pekka: lasciare Doctrine2 a gestire le istruzioni DDL è il modo migliore per fare le cose in Doctrine2. orm: schema-tool: [create | update] essendo i comandi rilevanti per gli strumenti da riga di comando. – timdev

risposta

7

Se lo si imposta nel proprio database, doctrine utilizza solo i valori predefiniti del database. Vedi questa domanda dal Doctrine 2.1 FAQ:

4.1.1. Come imposto il set di caratteri e le regole di confronto per le tabelle MySQL?

Non è possibile impostare questi valori all'interno dei file di mapping di annotazioni, yml o xml. Per far funzionare un database con il set di caratteri e le regole di confronto predefiniti, è necessario configurare MySQL per utilizzarlo come set di caratteri predefinito o creare il database con i dettagli di charset e di confronto. In questo modo vengono ereditati da tutte le nuove tabelle e colonne del database create.

+0

Dove posso impostare quei valori predefiniti del mio DB? –

3

Quando si crea il database, è necessario creare in questo modo:

CREATE DATABASE `your_table_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_polish_ci;

che permetterà le tabelle create di ereditare il set di caratteri e fascicolazione valori

+0

Grazie per questo :) –

4

Usa codice di seguito per impostare Regole di confronto, set di caratteri e motore di Doctrine:

/** 
* @ORM\Table(name="temporary", options={"collate"="utf16_latin_ci", "charset"="utf16", "engine"="MyISAM"}) 
* @ORM\Entity 
*/ 
Problemi correlati