Jusqu'à présent, j'ai créé et appris des applications Web Tous les DB ont utilisé le SQLite par défaut.
Si vous souhaitez définir l'environnement de production sur AWS lors de la création d'une nouvelle application cette fois, vous devez définir MySQL ... J'aimerais donc utiliser MySQL! Je suis encore un débutant, veuillez donc signaler toute erreur.
C'est la base de données la plus utilisée au monde et possède les fonctionnalités suivantes.
Le SGBDR utilisé par défaut avec Rails installé est ** SQLite ** SQLite a les fonctionnalités suivantes
Il semble préférable d'utiliser MySQL avec une énorme base de données
Rails utilise SQLite par défaut, donc Pour utiliser MySQL, spécifiez-le au démarrage
rails nouveau nom d'application--database=mysql
Peut être omis
rails nouveau nom d'application-d mysql
En faisant cela, il semble que le SGBDR puisse être changé en MySQL. Vérifiez le Gemfile au cas où ... Si non spécifié
Gemfile
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
En revanche, si vous spécifiez
Gemfile
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.3.18', '< 0.5'
est devenu! !!
Mais le problème est ... rails new Application name -d Une erreur s'est produite lors de l'exécution de mysql. .. ..
・
・
(Beaucoup de journaux)
・
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /Users/mariko/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/mysql2-0.5.3/ext/mysql2
/Users/mariko/.rbenv/versions/2.6.5/bin/ruby -I /Users/mariko/.rbenv/versions/2.6.5/lib/ruby/2.6.0 -r ./siteconf20201104-33105-i9fwuc.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for rb_wait_for_single_fd()... yes
-----
Using mysql_config at /usr/local/opt/[email protected]/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for SSL_MODE_DISABLED in mysql.h... yes
checking for SSL_MODE_PREFERRED in mysql.h... yes
checking for SSL_MODE_REQUIRED in mysql.h... yes
checking for SSL_MODE_VERIFY_CA in mysql.h... yes
checking for SSL_MODE_VERIFY_IDENTITY in mysql.h... yes
checking for MYSQL.net.vio in mysql.h... yes
checking for MYSQL.net.pvio in mysql.h... no
checking for MYSQL_ENABLE_CLEARTEXT_PLUGIN in mysql.h... yes
checking for SERVER_QUERY_NO_GOOD_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_NO_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_WAS_SLOW in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_ON in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_OFF in mysql.h... yes
checking for my_bool in mysql.h... yes
-----
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/opt/[email protected]/lib
-----
creating Makefile
current directory: /Users/mariko/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/mysql2-0.5.3/ext/mysql2
make "DESTDIR=" clean
current directory: /Users/mariko/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/mysql2-0.5.3/ext/mysql2
make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
compiling statement.c
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/mariko/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/mysql2-0.5.3 for inspection.
Results logged to /Users/mariko/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-19/2.6.0/mysql2-0.5.3/gem_make.out
An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
mysql2
run bundle binstubs bundler
Could not find gem 'mysql2 (>= 0.4.4)' in any of the gem sources listed in your Gemfile.
run bundle exec spring binstub --all
Could not find gem 'mysql2 (>= 0.4.4)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
rails webpacker:install
Could not find gem 'mysql2 (>= 0.4.4)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
Je vais le traduire pour le moment "Une erreur s'est produite lors de l'installation de mysql2 (0.5.3) et Bundler ne peut pas continuer." ···ne sait pas···. Je dois le battre pour le moment ...!
$ gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'
ERROR: While executing gem ... (OptionParser::InvalidArgument)
invalid argument: --source https://rubygems.org/
J'ai complètement négligé la partie de l'installation de MySQL. Installez en vous référant à l'article suivant! Procédure pour installer MySQL sur Mac avec Homebrew
$ brew update
$ brew install mysql
$ brew info mysql
mysql: stable 8.0.22 (bottled)
Open source relational database management system
https://dev.mysql.com/doc/refman/8.0/en/
Conflicts with:
mariadb (because mysql, mariadb, and percona install the same binaries)
percona-server (because mysql, mariadb, and percona install the same binaries)
/usr/local/Cellar/mysql/8.0.22 (294 files, 296.5MB) *
Poured from bottle on 2020-11-04 at 13:55:11
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/mysql.rb
License: GPL-2.0
==> Dependencies
Build: cmake ✘
Required: [email protected] ✔, protobuf ✔
==> Caveats
We've installed your MySQL database without a root password. To secure it run:
mysql_secure_installation
MySQL is configured to only allow connections from localhost by default
To connect run:
mysql -uroot
To have launchd start mysql now and restart at login:
brew services start mysql
Or, if you don't want/need a background service you can just run:
mysql.server start
==> Analytics
install: 85,249 (30 days), 214,834 (90 days), 813,126 (365 days)
install-on-request: 83,371 (30 days), 209,508 (90 days), 784,193 (365 days)
build-error: 0 (30 days)
La version 8.0.22 a été installée!
$mysql.server start
Starting MySQL
SUCCESS!
$mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
・ ・ ・ ・ Une autre erreur (pleurs) Est-ce inutile car il n'y a pas de mot de passe? Je pense que je vais le fixer pour le moment.
$mysql_secure_installation
Enter password for user root:(Entrer le mot de passe)
Configurer un plug-in qui vérifie la force de votre mot de passe? "Y"
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: y
Sélectionnez un niveau de vérification.
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Puisqu'il semble s'agir d'un environnement de production, sélectionnez 2. Si la force du mot de passe que vous avez entré précédemment ne correspond pas, vous serez invité à le saisir à nouveau. Si vous saisissez le mot de passe deux fois, est-il possible de le confirmer? Parce qu'il est dit "y"
Estimated strength of the password: 50
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Supprimer l'utilisateur anonyme (utilisateur anonyme)? "Y"
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Empêche la connexion de l'utilisateur root distant. Interdire la connexion? "O"
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
Supprimer la base de données nommée test créée par défaut? "O"
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Recharger immédiatement la table des autorisations pour que les modifications prennent effet? "O"
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
Pour le moment, avez-vous effectué les réglages?
$mysql -u root -p
Enter password:(saisie du mot de passe)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.32 Homebrew
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Euh, ça a marché! !! !! Pleurs
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
La base de données de test a également disparu!
Quittez mysql une fois ... Arrête ça ...
$ mysql.server stop
Shutting down MySQL
. SUCCESS!
La même erreur ... pleurer
J'ai procédé en référence à l'article suivant! [Rails] Que faire lorsque MySQL2 ne peut pas regrouper l'installation
$ brew info openssl
[email protected]: stable 1.1.1h (bottled) [keg-only]
Cryptography and SSL/TLS Toolkit
https://openssl.org/
/usr/local/Cellar/[email protected]/1.1.1g (8,059 files, 18MB)
Poured from bottle on 2020-05-21 at 18:53:48
/usr/local/Cellar/[email protected]/1.1.1h (8,067 files, 18.5MB)
Poured from bottle on 2020-11-01 at 12:26:48
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/[email protected]
License: OpenSSL
==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
/usr/local/etc/[email protected]/certs
and run
/usr/local/opt/[email protected]/bin/c_rehash
[email protected] is keg-only, which means it was not symlinked into /usr/local,
because macOS provides LibreSSL.
If you need to have [email protected] first in your PATH run:
echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> /Users/mariko/.bash_profile
For compilers to find [email protected] you may need to set:
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
For pkg-config to find [email protected] you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"
==> Analytics
install: 835,013 (30 days), 1,906,254 (90 days), 7,237,126 (365 days)
install-on-request: 136,062 (30 days), 257,990 (90 days), 1,007,070 (365 days)
build-error: 0 (30 days)
Cette partie semble être importante.
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
Exécutez les deux commandes suivantes
$ bundle config --local build.mysql2 "--with-cppflags=-I/usr/local/opt/[email protected]/include"
You are replacing the current local value of build.mysql2, which is currently nil
$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/[email protected]/lib"
You are replacing the current local value of build.mysql2, which is currently "--with-cppflags=-I/usr/local/opt/[email protected]/include"
Regroupez l'installation J'ai pu l'installer ...! !! !! Pleurs
J'ai dû faire des allers-retours jusqu'à ce que j'introduise MySQL dans mon application. Je suis désolé si c'est difficile à lire. J'espère que vous vous habituerez au pouvoir de quelqu'un, même un peu.
Merci beaucoup aux auteurs pour leur référence.
Il semble y avoir une procédure pour passer à SQLite en cours de route, je vais donc l'essayer avec l'application que j'ai créée jusqu'à présent.
Recommended Posts