Чтобы запустить .sql-файл в MySQL - PullRequest
1 голос
/ 18 июля 2009

Этот вопрос основан на этой теме .

Я запускаю безуспешно

sudo mysql 
\. /users/cs/SO_db/posts.sql 

Я получаю ошибку

ERROR 1146 (42S02): Table 'personal.posts' doesn't exist

Руководство MySQL говорит

Пятисимвольное значение SQLSTATE ( '42S02'). Значения указаны как ANSI SQL и ODBC и более стандартизированы. Не все ошибки MySQL числа отображаются в ошибку SQLSTATE коды. Значение «HY000» (общее error) используется для несопоставленных ошибок.

и

Ошибка: 1146 SQLSTATE: 42S02 (ER_NO_SUCH_TABLE)

Сообщение: таблица "% s.% S" не существует

Как вы можете решить сообщение об ошибке?

Ответы [ 5 ]

3 голосов
/ 18 июля 2009

Загруженный скрипт SQL ссылается на базу данных и / или таблицу, которой нет в базе данных.

Как правило, с помощью sudo нельзя вызывать инструмент mysql, поскольку привилегии пользователя системы отличаются от прав пользователей MySQL.

Чтобы выполнить скрипт SQL через mysql, я бы попробовал что-то вроде:

cat somefile.sql | mysql -u <mysqluser> -p <mysqldb>

Эта команда загрузит файл somefile.sql в инструмент mysql, подключится к серверу MySQL на localhost как пользователь <mysqluser> и выберет базу данных <mysqldb>. Инструмент mysql запросит пароль доступа <mysqluser> перед выполнением сценария.

2 голосов
/ 18 июля 2009

Как я уже упоминал в посте, на который вы ссылались, вы должны сначала создать таблицы.Посмотрите на XML или на вывод SQL, какие столбцы вам нужны.например, вот таблица, которая может содержать выходные данные из badges.xml (другие сейчас недоступны ..)

CREATE TABLE `badges` (
  `Id` int(11) NOT NULL default '0',
  `UserId` int(11) not NULL,
  `Date` datetime not  NULL,
  `Name` varchar(32) not NULL,
  PRIMARY KEY  (`Id`),
  KEY `Date` (`Date`),
  KEY `UserId` (`UserId`)
) ;
0 голосов
/ 18 июля 2009

Возможно, ваш файл sql не содержит команду "создать таблицу".

0 голосов
/ 18 июля 2009

Ваш posts.sql содержит несколько операторов, ссылающихся на таблицу сообщений, которых нет в вашей личной схеме.

Чтобы "устранить" ошибку, убедитесь, что таблица создана!

0 голосов
/ 18 июля 2009

Вы действительно создали базу данных 'personal' и таблицу 'posts'?

Возможно, вы захотите попробовать что-то вроде:

mysql -h localhost -u <user> -p<password> -D personal < /users/cs/SO_db/posts.sql
...