Laravel 4播种口音

时间:2013-08-21 18:24:37

标签: mysql laravel laravel-4 seeding

我正在尝试在我的数据库中播种类别。我将标题设置为唯一。然而,在法语中它拼写了catÉgorie。

我尝试播种Catégorie1,Catégorie2,Catégorie3。我php artisan db:seed时遇到错误,因为他读过它有 Cat?gorie 1,Cat?gorie 2,Cat?gorie 3 并且 Cat 重复(因此不是唯一的。)

我已将数据库设置为 utf8_general_ci 并在 config / database.php 中进行了更改。

我在这里想念的是什么?

2 个答案:

答案 0 :(得分:1)

虽然你没有指定,我假设你使用的是mysql,而“Categorie 1”是其中一个种子表中的一些内容。如果您想使用Laravel和utf8 mysql数据,请记住以下事项:

Laravel 4配置

//file: app/config/database.php

'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci',


播种机文件编码

  • 显然,你的所有文件都应该用utf8编码保存。


数据整理

  • 数据库排序规则设置为您在上述配置文件
  • 中设置的utf8
  • 表格排序与utf8相同
  • 这些字段也是需要的地方


数据库连接

  • 连接本身应该是utf8。


关于最后一句话,Laravel当然已经通过执行"set names '$charset' collate '$collation'"来建立mysql连接。如果由于某种原因您仍然会遇到问题,请尝试在 mysql server config 中强制执行utf8 charset和collat​​ion,它应该最终解决您的问题:

//file /etc/mysql/my.cnf

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

答案 1 :(得分:0)

提示&分析

“Cat?gorie 1”或“Catégory1”已处理,因为正常字符串已插入数据库表格行中。

但是一些现代查询字符串参数用类似的

表示
query("SELECT something FROM somewhere WHERE condition IN (?)", array('this', 'that'))

如果内容不是很好格式化,那么查询编译器可能会丢失。

另一点是,如果您在Dos中使用Artisan命令行,例如,如果您在Windows上,输出消息提及成功,错误或其他任何内容将无法在控制台中正确显示,因为UTF-8不支持DOS输出。


解决方案

1。播种机错误可能是正确的,如果记录确实存在,请检查数据库。

2。如果记录不存在,请附上您的:migration&种子班。