有没有办法使用Laravel更新MySQL数据库字符集,也许是数据库外观?我知道我可以像MySQL Workbench那样运行语句,但我想创建一个在数据库更新后对表运行多次更新的作业。
我想跑:
DB::statement("ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci");
但是我收到了一个错误:
SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll().
有没有办法可以完成我正在尝试做的事情,或者我应该将该声明与作业分开运行?
答案 0 :(得分:1)
这应该可以解决问题:
DB::connection()->getPdo()->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
我经常在运行我的陈述后重置这个:
DB::connection()->getPdo()->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);