![将网站从共享 cPanel 迁移到非托管 Ubuntu 22.04 vps,但无法成功导入 sql 文件](https://linux22.com/image/1201333/%E5%B0%86%E7%BD%91%E7%AB%99%E4%BB%8E%E5%85%B1%E4%BA%AB%20cPanel%20%E8%BF%81%E7%A7%BB%E5%88%B0%E9%9D%9E%E6%89%98%E7%AE%A1%20Ubuntu%2022.04%20vps%EF%BC%8C%E4%BD%86%E6%97%A0%E6%B3%95%E6%88%90%E5%8A%9F%E5%AF%BC%E5%85%A5%20sql%20%E6%96%87%E4%BB%B6.png)
一周前,我从 Hostinger 获得了一个非托管 VPS,并试图在服务器上托管一些网站。在这里我不得不说,我对带有 FASTPANEL 的 Ubuntu 22.04 还很陌生。
我已将旧服务器中的文件和数据库迁移到新服务器,但有一个 SQL 文件除外。旧服务器的规格如下:
我尝试将其中一个网站的 SQL 文件导入 phpMyAdmin,但没有成功。我相信这不是文件大小的问题。我成功导入了一个几乎相同的网站(使用不同的语言)的较大文件。新服务器的规格如下:
导入时phpMyAdmin抛出的错误是:
Error
Static analysis:
2 errors were found during the analysis.
A symbol name was expected! (near ")" at position 206)
At least one column definition was expected. (near ")" at position 206)
SQL query: Copy
-- -------------------------------------------------------- -- -- Stand-in structure for view `m6K_wsm_dateWiseBounceRate` -- (See below for the actual view) -- CREATE TABLE `m6K_wsm_dateWiseBounceRate` ( );
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 8
我认为上述各行没有错误。
我还尝试通过 Hostinger 浏览器终端导入它:
cd /var/www/fastuser/data/www/en.beentee.net
mysql -u beentee -f -p enbeentee < mgls_enbeent.sql
Hostinger浏览器终端抛出的错误是:
我甚至尝试使用以下命令为 phpMyAdmin 创建一个上传文件夹,但我仍然不知道是否可以通过这种方式导入文件:
sudo find / -type d -name phpmyadmin
mkdir -p /usr/share/fastpanel2-phpmyadmin/vendor/phpmyadmin/upload
mkdir -p /usr/share/fastpanel2-phpmyadmin/vendor/phpmyadmin/save
chmod a+w /usr/share/fastpanel2-phpmyadmin/vendor/phpmyadmin/upload
chmod a+w /usr/share/fastpanel2-phpmyadmin/vendor/phpmyadmin/save
gedit /usr/share/fastpanel2-phpmyadmin/vendor/phpmyadmin/config.inc.php
cd /usr/share/fastpanel2-phpmyadmin/vendor/phpmyadmin
sudo nano config.inc.php
但最后两个命令不起作用:
$cfg['UploadDir'] = '/usr/share/fastpanel2-phpmyadmin/vendor/phpmyadmin/upload';
$cfg['SaveDir'] = '/usr/share/fastpanel2-phpmyadmin/vendor/phpmyadmin/save';
kos 的回复:
您从 MariaDB 切换到 MySQL;它们大多兼容,但不能完全替代对方;请发布 sed -n '2496323,2496333p' </path/to/problematic/sql/file 的输出
毫克/升:
请查看以下输出:
sed -n '2496323,2496333p' </var/www/fastuser/data/www/en.beentee.net/mgls_enbeent.sql
kos 的回复:
好吧,第 2496323 行和第 2496324 行构成了一个空表的定义,这在 MySQL 中是无效的。我不确定这在 MariaDB 中意味着什么。您可以尝试删除该表定义(sed '2496323,2496324d' </path/to/problematic/sql/file >/path/to/new/file -> 这将创建一个新文件,然后您必须导入该文件),但是,我不确定这是否意味着应用程序正在使用数据库。也许您应该尝试看看 MariaDB 是否允许完全兼容 MySQL 的导出选项,然后再次导出数据库。
毫克/升:
我将首先尝试导出兼容的文件。请帮我从此下拉菜单中选择一两个:
kos 的回复:
最高兼容 MySQL 版本似乎是 4... 这是史前的。我会尝试一下,除非您第一次已经这样做了。
毫克/升:
我能够使用兼容模式将错误减少到一个错误:
毫克/升:
然后,我用数据库清理器检查了表格。你说得对。表格是空的。我从导出中排除了表格,并成功导入了生成的 sql 文件。然后等待网站传播。谢谢你的帮助!