MySQldump -错误1049未知的数据库[db]选择数据库时

i1icjdpr  于 2023-08-02  发布在  Mysql
关注(0)|答案(2)|浏览(131)

我在Linux Red Hat 7中运行MySQL。我有一个现有的数据库error.db,我将它复制到MySQL目录中,现在我想将它导入MySQL。我找到了this guide,它建议使用mysqldump将数据库导出到.sql文件,然后我可以在MySQL客户端中获取该文件。
所以我尝试了以下方法:

$ mysqldump --socket=socket -u root -p error.db > error_db.sql

字符串
输入密码后,我收到了这个错误:

mysqldump: Got error: 1049: Unknown database 'error.db' when selecting the database


我肯定在正确的目录下,error.db肯定存在,我肯定输入了正确的密码。我试着添加-d标志和--databases标志,但没有成功。我也试过使用error而不是error.db,但没有成功。
我检查了其他问题,还没有找到一个有效的解决方案。这一个,问题是由错别字引起的(我知道不是这样的:)mysql export table but no database
这个问题被解决了,因为OP把密码放在命令行中,显然使用-p标志解决了他们的问题(尽管你可以看到,我使用-p标志,但它仍然不起作用:)MYSQL DBDump Error message
我在工作中使用Load Sharing Facility来运行MySQL,但这并没有阻止我使用另一个.sql文件将数据库加载到MySQL中,所以我不确定这是否会有不同。

**编辑:**根据this question,我尝试使用mysql而不是mysqldump,但仍然没有成功:

mysql --socket=socket -u root -p error.db > error_db.sql
Enter password: 
ERROR 1049 (42000): Unknown database 'error.db'


你知道这里可能出了什么问题吗?

编辑2:error.db数据库在SQLite3中。我曾假设数据库类型是交叉兼容的,但这可能是一个错误的假设。所以我想我的问题是如何将SQLite3数据库转换为MySQL。

zujrkrfu

zujrkrfu1#

所以,原来问题是因为我试图使用MySQL打开SQLite中创建的数据库。回想起来,我可能应该看到这将是一个问题。
我采用的解决方案是通过在SQLite3中打开error.db,并使用以下代码将SQLite3中的文件导出为CSV文件:

.headers on
.mode csv
.output error_data.csv

字符串
Source
然后我打开MySQL使用:

mysql --socket=socket -u root -p --local-infile error


我创建了数据库error和表error,然后运行以下命令,成功地将.csv文件中的数据导入到我的数据库中:

mysql> LOAD DATA LOCAL INFILE 'error_data.csv'
    -> INTO TABLE error
    -> FIELDS TERMINATED BY ','
    -> ENCLOSED BY '"'
    -> LINES TERMINATED BY '\n'
    -> IGNORE 1 ROWS;
Query OK, 920 rows affected, 627 warnings (0.05 sec)
Records: 920  Deleted: 0  Skipped: 0  Warnings: 627


感谢this question的@mpoletto和this question的OP帮助我弄清楚了这一切。
我不知道为什么会有警告我无法检查它们,因为在我知道必须在命令之后立即运行SHOW WARNINGS之前,我已经运行了一个select查询。

xv8emn3q

xv8emn3q2#

使用此mysqldump --socket=socket -u root -p --databases error.db > error_db.sql命令,而不是mysqldump --socket=socket -u root -p error.db > error_db.sql

相关问题