Ошибка 1045, но на этот раз через вкладку SQL [дубликат]

Строка ошибки «Ссылка на объект, не установленная на экземпляр объекта.» указывает, что вы не назначили экземпляр объекта объектной ссылке, и все же вы получаете доступ к свойствам / методам этого объекта.

например: скажем, у вас есть класс под названием myClass и он содержит одно свойство prop1.

public Class myClass
{
   public int prop1 {get;set;}
}

Теперь вы получаете доступ к этому prop1 в каком-то другом классе, как показано ниже:

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref.prop1 = 1;  //This line throws error
     }
}

выше строки выдает ошибку, потому что ссылка класса myClass объявлена, но не создана, или экземпляр объекта не назначается referecne этого класса.

Чтобы исправить это, вам нужно создать экземпляр (присвоить объект ссылке на этот класс).

public class Demo
{
     public void testMethod()
     {
        myClass ref = null;
        ref = new myClass();
        ref.prop1 = 1;  
     }
}
60
задан OMG Ponies 23 May 2011 в 00:22
поделиться

3 ответа

Как говорит @fijaaron,

  1. GRANT ALL не означает GRANT FILE
  2. GRANT FILE работает только с *.*

Так же делают

GRANT FILE ON *.* TO user;
12
ответ дан 7ochem 26 August 2018 в 10:59
поделиться

Так как cP / WHM убрал возможность изменять привилегии пользователя как root в PHPMyAdmin, вы должны использовать командную строку для:

mysql>  GRANT FILE ON *.* TO 'user'@'localhost';

. Шаг 2 - разрешить этому пользователю выгружать файл в определенной папке. Есть несколько способов сделать это, но я положил папку в:

/home/user/tmp/db

и

chown mysql:mysql /home/user/tmp/db

Это позволяет пользователю mysql записывать файл. Как уже отмечали предыдущие плакаты, вы также можете использовать временную папку MySQL, я не думаю, что это действительно важно, но вы определенно не хотите, чтобы это разрешение 0777 (доступно для записи в мире), если вы не хотите, чтобы мир видел ваши данные. Существует потенциальная проблема, если вы хотите промыть-повторить процесс, поскольку INTO OUTFILE не будет работать, если файл существует. Если ваши файлы принадлежат другому пользователю, тогда просто попытка unlink($file) не будет работать. Если вы похожи на меня (параноик около 0777), вы можете установить целевой каталог, используя:

chmod($dir,0777)

непосредственно перед выполнением команды SQL, затем

chmod($dir,0755)

немедленно после чего следует unlink(file), чтобы удалить файл. Это заставляет его работать под вашим веб-пользователем и не нужно вызывать пользователя mysql.

0
ответ дан Grindlay 26 August 2018 в 10:59
поделиться

Честно говоря, я не разбирался в грантах, и это работало даже без привилегий:

echo "select * from employee" | mysql --host=HOST --port=PORT --user=UserName --password=Password DATABASE.SCHEMA > output.txt
34
ответ дан JakeGould 26 August 2018 в 10:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: