1.6和mysql-save()不起作用

sqougxex  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(332)

我已经安装了推进1.6。我可以用命令在mysql中创建表。
下面是我在文件runtime-config.xml中的设置

<propel>
            <datasources default="myProject">
                <datasource id="myProject">
                    <adapter>mysql</adapter> 
                    <connection>
                        <dsn>mysql:host=localhost;dbname=myDBname</dsn>
                        <user>myUser</user>
                        <password>mypass</password>
                      **<charset>utf8</charset>
                        <collate>utf8_unicode_ci</collate>**

                    </connection>
                </datasource>
            </datasources>
        </propel>

mysql数据库和表用户有排序规则utf8\u unicode\u ci(见下图):
mysql排序截图
ι 通过以下代码创建一个新的patient对象来测试一切正常:

$pat = new Patient();
$pat->setEmail("tg@gmail.com");
$pat->setAddress("Η διεύθυνσή μου");
$pat->setAmka("555555555");
$pat->setBirthdate("1966-01-01");
$pat->setFirstname("Τοόνομάμου");
$pat->setLastname("τοεπώνυμόμου");
$pat->setPhone("2109999999");
$pat->setSex(1);

$pat->save();

我检查了netbeans中的debug模式,对象$pat包含正确格式的值,以便我可以读取它们。
save()之后,在mysql中,希腊值显示如下:mysql values saved screenshot
我希望你能帮我解决这个问题。先谢谢你。

kxe2p93d

kxe2p93d1#

最后,我找到了解决办法。
在mysql中,我使用以下命令检查设置:

show variables like 'char%';

我不得不用utf8mb4替换字符集utf8。
现在一切都很完美!!
更多信息,https://mathiasbynens.be/notes/mysql-utf8mb4

6ioyuze2

6ioyuze22#

您必须在推进连接dsn-中指定字符集 runtime-config.xml 文件如下:

<dsn>mysql:host=localhost;dbname=myDBname;charset=UTF8</dsn>

https://github.com/propelorm/sfpropelormplugin/issues/74#issuecomment-2011350

xxhby3vn

xxhby3vn3#

Τοόνομάμου ,当“mojibaked”变成 Τοόνομάμου . 注意,这种模式通常 Î 还有第二个角色,比如你的截图。显然地, latin1 在某个时候被牵扯进来。
utf-8字符故障;我所看到的并不是我所看到的,而是莫吉巴克及其原因。
可能你有“双重编码”,这个链接也讨论了这个问题。
如果选择修复数据而不是重新开始,请参阅http://mysql.rjweb.org/doc.php/charcoll#fixes_for_various_cases

相关问题