[英]Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error
[英]PDOException : SQLSTATE[HY000]: General error: 7890 Can't find file
我正在尝试运行以下项目
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;
");
}
}
据我所知,我没有更改任何文件,并且与回购中的文件相同
Windows 使用\\
作为路径分隔符,这也是 MySQL 中的转义字符。 当您将C:\\Users\\user\\Desktop\\laravel-vue-polling-app\\storage\\ips.csv
给 MySQL 时,它认为单个\\
是转义字符,而不是路径分隔符。 要解决此问题,请执行
$ipsPath = addslashes($ipsPath);
在您的查询中使用它之前。
如你看到的
PDOException :SQLSTATE[HY000]:一般错误:7890 找不到文件“ C:UsersuserDesktoplaravel-vue-polling-appstorageips.csv ”。 没有目录分隔符?
您是否尝试使用[ESCAPED BY 'char']
你的种子文件 $ips 应该是这样的
$ipsPath = addslashes(storage_path('ips.csv'));
...
....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.