我正在尝试在我的数据库中播种类别。我将标题设置为唯一。然而,在法语中它拼写了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 中进行了更改。
我在这里想念的是什么?
答案 0 :(得分:1)
虽然你没有指定,我假设你使用的是mysql,而“Categorie 1”是其中一个种子表中的一些内容。如果您想使用Laravel和utf8 mysql数据,请记住以下事项:
Laravel 4配置
//file: app/config/database.php
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
播种机文件编码
数据整理
数据库连接
关于最后一句话,Laravel当然已经通过执行"set names '$charset' collate '$collation'"来建立mysql连接。如果由于某种原因您仍然会遇到问题,请尝试在 mysql server config 中强制执行utf8 charset和collation,它应该最终解决您的问题:
//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&种子班。