Veritabanı Bırakılırken Hata ('.test \' olamaz, hata no: 17)


124

Temel olarak, "mysqladmin -u root -p password" komutunu kullanarak bir root şifresinin nasıl oluşturulacağı öğretildi, bu tüm windows komut editörü aracılığıyla yapıldı. Şimdi, sonraki süreç "VERİTABANLARINI GÖSTER" kullanılarak elde edilen varsayılan veritabanlarını (bilgi. Şema, mysql ve test) görüntülemekti;

Ancak kitaba göre gereksiz test dosyasını silmemiz gerekti ve aşağıdaki hata ortaya çıkıyor:

Veritabanı Bırakılırken Hata ('.test \' olamaz, hata no: 17)

Kullanılacak komut şuydu: DROP DATABASE test;

MYSQL ve PHPMYADMIN kullanıyorum. Dosyayı hatasız bırakma konusunda herhangi bir yardım var mı?


MySQL kullanıcısı kesinlikle ilgili veri dizinine sahip mi?
John Parker

Güncelleme. PHPMYADMIN'den yeni bir veritabanı oluşturdum ve komut editöründeki komutu kullandım, bu sefer hatayı patlatmadan çalıştı. Düzenleme: Middaparka, henüz o kısma dokunmadım. Varsayılan olarak, verilen izinlerin ne olduğunu bilmiyorum.
Sid

Sanırım yeni MySQL sürümleri TEST veritabanını gerçekten silmiyor, bunun yerine mysql dizininizdeki / bin "TEST" klasörünü silmeyi deneyin, bunun öğrenme sürecinize eklemek için başka bir çözümü .....
amenko

Yanıtlar:


163

Bir veritabanı, veri dizini altındaki bir dizinle temsil edilir (genellikle /var/lib/mysql) ve dizin, tablo verilerinin depolanması için tasarlanmıştır.

DROP DATABASEDeyim tüm tablo dosyaları kaldırmak ve daha sonra veritabanı temsil dizini kaldıracaktır. Bununla birlikte, tablo olmayan dosyaları kaldırmaz, bu nedenle dizini kaldırmayı mümkün kılmaz.

MySQL, dizini kaldıramadığında bir hata mesajı görüntülüyor

Veritabanı dizininde kalan dosyaları ve ardından dizinin kendisini kaldırarak veritabanını gerçekten manuel olarak bırakabilirsiniz.


1
Teşekkürler Shakti Singh. PHPMYADMIN'i ziyaret ederek 'test' tablosunu düşürdüm, ancak bunu gerçekten komut düzenleyicisi aracılığıyla yapmak istedim. Sanırım aynı dosyayı tekrar tekrar silmeyi denedim, bu yüzden hata. Yeni bir DB oluşturdum ve DROP DATABASE komutunu girdim, işe yaradı!
Sid

2
Veritabanında yalnızca MyISAM tabloları varsa dizini gerçekten yalnızca kendiniz kaldırabileceğinizi unutmayın
no

Benim durumumda ben gerekiyordu logoutve sonra logintekrar, veritabanı yok olmasına.
Anas Azeem

5
Dosyalar tam olarak nerede?
Kara

Dosyaları veritabanı dizininde oluşturdum. Bu dosyaları kaldırdıktan sonra sorunum çözüldü.
zahid

37

Mac'te yeni bir mysql 5.5 yüklemesinde aynı sorunla karşılaştım. Test şemasını bırakmaya çalıştım ve hata 17 mesajı aldım. errno 17, bazı posix os işlevleri tarafından döndürülen ve olmaması gereken yerde bir dosyanın var olduğunu gösteren hatadır. Veri dizininde garip bir ".empty" dosyası buldum:

sh-3.2# ls -la data/test
total 0
drwxr-xr-x   3 _mysql  wheel  102 Apr 15 12:36 .
drwxr-xr-x  11 _mysql  wheel  374 Apr 15 12:28 ..
-rw-r--r--   1 _mysql  wheel    0 Mar 31 10:19 .empty

.Empty dosyasını rm'ledikten sonra veritabanı bırak komutu başarılı oldu.

.Empty dosyasının nereden geldiğini bilmiyorum; belirtildiği gibi, bu yeni bir mysql kurulumuydu. Yükleme sürecinde bir sorun olabilir.


3
MySQL Bug # 62443'e bakın . Bu, cmake'deki bir sınırlama nedeniyle 5.5.11'de ortaya çıkan bir MySQL hatasıdır. Dediğiniz gibi, geçici bir çözüm veri \ test \ .empty'yi kaldırmaktır
John McCarthy

2
Windows'ta benim için şuydu: C: \ wamp \ bin \ mysql \ mysql5.5.24 \ data \ test \
Máthé Endre-Botond

34

Mysql kurulumunuz için datadir'e gidin ve veritabanlarını manuel olarak çalıştırın. Olabilir

/usr/local/var/mysql

Sonra,

rm -R <Your DB name>

Kurulumunuzun verilerini kontrol etmek için,

vim the mysql.server file and find it there.

7
Mysql 5.5.34-0ubuntu0.13.04.1 ile linux nane çalıştırıyorum ve / var / lib / mysql altında saklıyorlar. Eminim farklı dağıtımlar için farklıdır.
Craig Schmidt

1
Dizinin nerede olduğunu bana bildirdiğiniz için teşekkür ederiz !!
Sankalp Singha

Benim için çalışıyor :)
Öğrenci

benim için çalıştı rm -R databasename'i deneyin ve ardından phpmyadmin'i yeniden yükleyin
Vikas Kandari


12

XAMPP ise, aşağıdakileri yapın:

cd /opt/lampp/var/mysql;
sudo su;
rm -rf test;

Bu yardımcı olur umarım.


+1 Bu, üzerine monte edilmiş bir XAMPP kullanıyorsanız, mac'ta iyi çalışır. terminali uygulama (monte edilmiş xampp uygulaması) aracılığıyla açın ve yukarıdaki kılavuzu izleyin.
Bobby Ax

Bu Bana Tekrar Yardımcı Oldu :)
Bobby Axe

8

WAMP ve onunla birlikte gelen phpMyAdmin ile bu problemle karşılaştım. Veritabanını kaldırmak ve hatayı ortadan kaldırmak için. içeri girdimC:\wamp\bin\mysql\mysql5.5.24\data\Söz konusu veritabanının klasörüne ve sildim.

Sonra phpMyAdmin'de sayfayı yeniledim ve veritabanı kayboldu.


4

Şimdiye kadarki yanıtlara eklemek için: Windows 10'da veri dosyaları burada tutulur ...

C: \ ProgramData \ MySQL \ MySQL Sunucusu [mn] \ veri

Veritabanınızdaki her şema için dizinler olacaktır. Bırakmaya çalıştığınız şemanın içine girmek, gereksiz dosyaları manuel olarak silmek ve ardından bırak komutunu tekrar denemek isteyeceksiniz.

Bir veritabanına karşı herhangi bir çalışma tezgahı değişikliği bu konumda depolanacaktır. Örneğin, veritabanlarımdan birinde tersine mühendislik alıştırması yaptıktan ve bu konumdaki bir .mwb dosyasında depolanan değişiklikleri kaydettikten sonra bu hatayı aldım.


1

Verileri sql dizininde silebilirsiniz.

Benim için Windows 10'da AMPPS kullanıyordum. AMPPs kurulum dizinine gittim. benim için öyleydi:

D:\Program Files (x86)\Ampps\mysql\data

çünkü ikincil sürücüme yükledim.

Ardından SQL istemcinizi yenileyin ve gittiğini göreceksiniz.


1

İki şeyi kontrol etmeniz gerekebilir.

1- Veritabanı Klasörünün izni Silmek istediğiniz veritabanı, mysql işleminin sahip olduğu sahiple aynı olmalıdır.

2- Dizin boş olmalı mysql veri dizinine gidin ve dizinin boş olduğunu doğrulayın

Bundan sonra mysql cli'nizi bağlayın ve drop veritabanı komutunu tekrar çalıştırın.


1

Bunu gözden geçirin ve seçili veritabanındaki ilgili önbellek dosyalarını kaldırın, ardından veritabanınızı bıraktıktan sonra

Önce Seçtiğiniz DB'yi İçeren MySQL Veri Dizininizi bulun

Linux

  • MySQL'in yapılandırma dosyasını açın: daha az /etc/my.cnf
  • "Datadir" terimini arayın: / datadir

  • Varsa, şunu okuyan bir satırı vurgular: datadir = [yol]

  • Bu satırı manuel olarak da arayabilirsiniz. Tipik olarak [mysqld] bölüm başlığı altında bulunur, ancak mutlaka orada bulunması gerekmez.

  • Bu satır yoksa, MySQL varsayılan olarak: / var / lib / mysql olacaktır.

Windows 1. MySQL'in yapılandırma dosyasını Not Defteri'nde açın: my.ini

My.ini, yüklendiği her yerde olacak olan MySQL program klasöründe yer alacaktır. MySQL'i kurmadıysanız, my.ini'yi aramak için Windows "arama" özelliğini kullanın. Ayrıca [sürücü]: \ Program Files \ MySQL \ MySQL Server 5.5'e göz atarak manuel olarak da arayabilirsiniz.

  1. "Datadir" terimini bulmak için Not Defteri'nde bir arama yapın.

  2. Varsa, şunu okuyan bir satırı vurgular: datadir = [yol]

  3. Bu satırı manuel olarak da arayabilirsiniz. Tipik olarak [mysqld] bölüm başlığı altında bulunur, ancak mutlaka orada bulunması gerekmez.

  4. Bu satır yoksa, muhtemelen [sürücü]: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data altında bulabilirsiniz.

NOT: "ProgramData" klasörü gizli olabilir. Windows Gezgini'ne açık yolu yazmanız gerekebilir


1
mysql -s -N -username -p information_schema -e 'SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = "datadir"'

Komut, değeri yalnızca MySQL'in dahili bilgi şeması veritabanından seçecek ve tablo çıktısını ve sütun başlıklarını devre dışı bırakacaktır.

Linux'ta çıktı [benim sonucu]:

/var/lib/mysql

veya

mysql> select @@datadir;

MYSQL CLI'de

ve sonra

cd /var/lib/mysql && rm -rf test/NOTEMPTY

sonucunuza göre yolu değiştirin


0

Benim durumumda ben benim veritabanında altında herhangi bir tablo görmedim phpMyAdminben kullanıyorum Wamp serverama altında dizin işaretlendiğinde C:\wamp\bin\mysql\mysql5.6.12\databuldum I employed.ibdben bu dosyayı silindiğinde elle ben başardı dropveritabanına phpMyAdminsorunsuz sorunsuz.


0

Benim durumumda sorun, veritabanı dizininde kalan bir döküm dosyasıydı. Bu dosya muhtemelen üzerinde çalıştığım bir yedekleme komut dosyası testi sırasında oluşturuldu. Dosyayı manuel olarak sildikten sonra veritabanını bırakabilirim.


0

Veritabanlarını bırakırken 'rmdir ..' hatasıyla aynı sorunu yaşadım (mac'ta mysql 5.6). Boş bir veritabanı dizininden kurtulmak mümkün değildir. Çözümler için @ Çerçeve ve @Beel'e teşekkürler.

Önce (/ Applications / XAMPP / xamppfiles / var / mysql) içindeki Terminal'den db dizinini sildim.

Daha fazla db düşüşü için boş test dosyasını da sildim. Benim durumumda dosya NOTEMPTY olarak adlandırıldı ancak hala 0 içeriyordu:

sudo ls -al test
total 0
drwxrwx---   3 _mysql  _mysql  102 Mar 26 16:50 .
drwxrwxr-x  18 _mysql  _mysql  612 Apr  7 13:34 ..
-rw-rw----   1 _mysql  _mysql    0 Jun 26  2013 NOTEMPTY

Önce Chmod ve sonra

sudo rm -rf test/NOTEMPTY

Bundan sonra veritabanlarını düşürmede sorun yok


0

benim durumumda sadece veri dizinine gidin yol "wamp \ bin \ mysql \ mysql5.6.17 \ data" burada tüm veritabanları klasörünü göreceksiniz sadece bunu veritabanı klasörünüzü siliniz, veritabanı otomatik olarak düşecektir :)


0

Bu problemle karşılaştım ve veritabanı dizinini kontrol ettiğimde birkaç dosya vardı exp( ibdve frmdosyaları kaldırılmıştı). Dosyaları özniteliklerine bakmak için listeleme (sahip zaten dosyalar üzerinde rw ayrıcalıklarına sahip olduğundan)

lsattr *.exp
-------------e-- foo.exp
-------------e-- bar.exp

Adam sayfası diyor

       The  'e'  attribute  indicates that the file is using extents for mapping the blocks on disk.
       It may not be removed using chattr(1).

Aslında chattr -ebu dosyaları yapabilirsiniz , ancak mysql yine de veritabanını bırakmanıza izin vermez. rmBununla birlikte, dosyaları ile kaldırmak, veritabanının temiz bir şekilde bırakılmasına izin verir.


0

Bu, / var / lib / mysql klasörünün veritabanı klasörünü başka bir sunucudan sunucunuza kopyaladığınız için olur. Ancak şu dosyaları kopyalamadınız: / var / lib / mysql / ib_buffer_pool / var / lib / mysql / ibdata1 / var / lib / mysql / ib_logfile0 / var / lib / mysql / ib_logfile1 / var / lib / mysql / ibtmp1 Yani yeni bir veritabanı ve tablo oluşturabilir, bunları bırakabilirsiniz ancak başka bir sunucudan kopyaladığınız veritabanlarını bırakamazsınız ve ayrıca başka bir sunucudan kopyaladığınız aynı veritabanını inceleyemezsiniz. Bu yüzden o dosyaları da kopyaladım: ib_buffer_pool, ibdata1, ib_logfile0, ib_logfile1, ibtmp1 bundan sonra her şey çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.