55

I am trying to import a .sql file using MySQL Workbench and I get this error:

ERROR 1046 (3D000) at line 28: No database selected

I have first created an empty database called with the same name as the .sql file but it doesn't work. I have also tried to do it with the mysql command client using:

mysqldump -u root database > file.sql 

But it says a have an error in my SQL syntax. Furthermore, I don't know the path where I have to set the file.sql.

RolandoMySQLDBA
185k34 gold badges327 silver badges541 bronze badges
asked Sep 14, 2012 at 11:43
1
  • I was able to import mysqldump using the below mysql> use mydatabase; mysql> source sql_file.sql; Commented Jul 28, 2017 at 2:03

6 Answers 6

6

juergen d's answer is of course correct; however, considering your error message, you can also add to your SQL file at the beginning line like:

USE your_database_name;

This should also do the job and let you import under the Workbench.

When you are using mysqldump, the exported file will be saved in the current folder. It doesn't matter under what path it is. Just when importing from command line you need to be at the same folder or specify path to the file. But this isn't the case when you are using visual tool like Workbench, where you need to select the file from folder tree anyway.

answered Sep 14, 2012 at 11:50
0
71

Export:

mysqldump -u username –-password=your_password database_name > file.sql

Import:

mysql -u username –-password=your_password database_name < file.sql 
answered Sep 14, 2012 at 11:46
6
  • 11
    There has to be no space between -p and password Commented Sep 14, 2012 at 11:47
  • 1
    What if I don't have a password? Commented Sep 14, 2012 at 11:57
  • 1
    Then skip password parameter. Commented May 31, 2013 at 10:35
  • Piping (mysqldump db -uuser -ppass|mysql new_db -uuser -ppass) removes the need to use an intermediate file. Commented Oct 12, 2015 at 10:05
  • 3
    The database has to exist in MySQL for this to work, I think. Commented Feb 5, 2016 at 2:02
43

You can also import an .sql file as an already connected user to the database manner :

mysql> use your_database_name;
mysql> source file.sql;
Nick Chammas
14.8k17 gold badges77 silver badges124 bronze badges
answered Jul 11, 2013 at 8:44
1
  • 4
    source D:/path/file.sql; works superb! remember the front slash instead of back slash. Commented Jan 9, 2015 at 11:08
7

Another way to import dump files when source <filename> doesn't work is to do the following:

Dump

~> mysqldump --user=<user> --password=<password> <db_name> > <export_file_name>.sql

Import

> mysql -u <user> -p <pass> <db_name>
mysql> USE <db_name>; (if you didn't already select)
mysql> \. ~/<export_file_name>.sql
answered Jul 15, 2015 at 7:17
4

You are missing the password in command. Use the following.

mysql --u [username] --password=[password] [database name] < [dump file]
answered Sep 14, 2012 at 11:47
1
  • Database name is not required if the SQL file contains DB creation + USE [database name]. Commented Jul 28, 2021 at 16:11
1

For Windows, in the MySQL server installation directory (e.g. C:\Program Files\MySQL\MySQL Server 5.5), in the my.ini file, add the following line under [mysqld] in the server section:

max_allowed_packet = 16M

And save the changes. (If you are not allowed to save, then copy and paste to desktop and edit again, then paste it in the same location.)

After that, restart your MySQL server.

Mat
10.3k4 gold badges44 silver badges40 bronze badges
answered May 31, 2013 at 9:32