php - PDOException:SQLSTATE [HY000]:一般错误:7890 找不到文件
问题描述
我正在尝试运行以下项目
https://github.com/saeedvaziry/laravel-vue-polling-app.git'
我正在关注项目 readme.md 但我在运行时收到 PDOException
php artisan migrate:refresh --seed
我的问题是什么导致了这个错误,我该如何解决
这是cli输出
PDOException : SQLSTATE[HY000]: General error: 7890 Can't find file 'C:UsersuserDesktoplaravel-vue-polling-appstorageips.csv'.
at C:\Users\user\Desktop\laravel-vue-polling-app\database\seeds\IpAddressesTableSeeder.php:18
14| $ipsPath = storage_path('ips.csv');
15| $pdo = \DB::connection()->getPdo();
16| $pdo->exec("
17| LOAD DATA LOCAL
> 18| INFILE '" . $ipsPath . "'
19| INTO TABLE
20| `ip_addresses`
21| FIELDS TERMINATED BY ','
22| ENCLOSED BY '\"'
Exception trace:
1 PDO::exec("
LOAD DATA LOCAL
INFILE 'C:\Users\user\Desktop\laravel-vue-polling-app\storage\ips.csv'
INTO TABLE
`ip_addresses`
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '
'
IGNORE 0 LINES;
")
C:\Users\user\Desktop\laravel-vue-polling-app\database\seeds\IpAddressesTableSeeder.php:18
2 IpAddressesTableSeeder::run()
C:\Users\user\Desktop\laravel-vue-polling-app\vendor\laravel\framework\src\Illuminate\Container\BoundMethod.php:29
这是播种机文件
<?php
use Illuminate\Database\Seeder;
class IpAddressesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$ipsPath = storage_path('ips.csv');
$pdo = \DB::connection()->getPdo();
$pdo->exec("
LOAD DATA LOCAL
INFILE '" . $ipsPath . "'
INTO TABLE
`ip_addresses`
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES;
");
}
}
据我所知,我没有更改任何文件,并且在 repo 中是一样的
解决方案
Windows 使用\
路径分隔符,这也是 MySQL 中的转义字符。当您传递C:\Users\user\Desktop\laravel-vue-polling-app\storage\ips.csv
给 MySQL 时,它认为 single\
是转义字符,而不是路径分隔符。要解决此问题,请执行
$ipsPath = addslashes($ipsPath);
在查询中使用它之前。
推荐阅读
- windev - 创建和编写 PDF Webdev
- android - React Native DrawerLayout:孩子的阴影出现在iOS上但不在Android上
- python - 为什么没有捕获到多父异常?
- xml - XML 包含未知编码的奇怪字符
- java - 如何使用 Http 请求执行 servlet?
- polymer - 如何在 visualstudio.com 中运行“聚合物构建”
- apache - 如何在詹金斯中一次性为多个工作添加特定的后期构建动作?
- android - Fresco 从文件中播放 gif
- java - Java 给我一个错误“java.io.ioexception 永远不会被抛出相应的 try 语句的主体”
- multithreading - 即席多线程和 Spark