1

我正在使用 laravel 4。

在迁移期间,我将行插入到我创建的表中。

例子:

        Schema::create('month', function(Blueprint $table)
                {
                        $table->integer('id');

                        $table->string('name');

                });

           DB::table('month')->insert(
                    array(
                            array(
                                    'id' => 1,
                                    'name' => 'Janeiro'
                            ),
                            array(
                                    'id' => 2,
                                    'name' => 'Fevereiro'
                            ),
                            array(
                                    'id' => 3,
                                    'name' => 'Março'
                            ),
                            array(
                                    'id' => 4,
                                    'name' => 'Abril'
                            ),
                            array(
                                    'id' => 5,
                                    'name' => 'Maio'
                            ),
                            array(
                                    'id' => 2,
                                    'name' => 'Junho'
                            ),                                
                            array(
                                    'id' => 7,
                                    'name' => 'Julho'
                            ),
                            array(
                                    'id' => 8,
                                    'name' => 'Agosto'
                            ),
                            array(
                                    'id' => 9,
                                    'name' => 'Setembro'
                            ),
                            array(
                                    'id' => 10,
                                    'name' => 'Outubro'
                            ),
                            array(
                                    'id' => 11,
                                    'name' => 'Novembro'
                            ),
                            array(
                                    'id' => 12,
                                    'name' => 'Dezembro'
                            ),                                   

                    ));

问题是第 3 个月,Março 被插入为“Mar”,而不是应有的“Março”。

我认为我的 Laravel 数据库配置是正确的:

    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'alaviagens',
        'username'  => 'alaviagens',
        'password'  => '',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

我认为表格是字符集也是正确的:

    CREATE TABLE `month` (
      `id` int(11) NOT NULL,
      `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

如果我使用例如 Sequel Pro 更改数据库中的记录本身,我可以成功地将其更改为“Março”。

知道可能是什么原因造成的以及如何解决吗?

4

1 回答 1

0

您的 Laravel 配置和数据库/表排序规则看起来不错,您必须确保您的迁移/种子 php 文件以 utf8 编码保存。

当然很明显,您的数据库连接也应该在 utf8 中运行。Laravel 应该默认提供,但如果由于任何原因没有完成,你应该通过在 mysql 服务器配置中强制执行 utf8 来修复它。

//file /etc/mysql/my.cnf

[mysqld]
...
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
...


编辑:

当您在 OSX 上使用标准MAMP时,请按照以下说明更改 mysql 设置。

1) 检查加载的 my.cnf 配置的位置,在终端中运行:

mysql --help | grep cnf

对于 MAMP 2.0,它应该导致类似于

/etc/my.cnf /etc/mysql/my.cnf /Applications/MAMP/conf/my.cnf ~/.my.cnf

2)my.cnf在上面的文件路径之一中创建并按照我​​的初始说明进行修改。

如果您使用的是MAMP PRO,请在下方File > Edit Template > MySQL my.cnf进行更改。

编辑2:

如果您对 my.cnf 有问题,您还可以使用一些预定义的模板,这些模板是 MAMP 附带的

a) 检查模板的位置

cd /Applications/MAMP/
find . | grep cnf

这将导致

./Library/support-files/my-huge.cnf
./Library/support-files/my-innodb-heavy-4G.cnf
./Library/support-files/my-large.cnf
./Library/support-files/my-medium.cnf
./Library/support-files/my-small.cnf

所以现在您可以选择上述模板之一并将其复制到 MAMP 目录并轻松修改它:

sudo cp /Applications/MAMP/Library/share/mysql/my-medium.cnf /Applications/MAMP/Library/my.cnf



最后一步:

重新启动 MAMP/MYSQL

于 2014-04-16T12:58:46.593 回答