この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
2024年04月30日
Laravel : migrateでのデータ型指定
Laravelのmigrateでカラム定義するとき、データタイプの指定方法がよく分からない。
このページが一番、分かり易い。
https://qiita.com/Otake_M/items/3c761e1a5e65b04c6c0e
ここに書かれている中で、使用頻度の高そうなものを転記します。
increments('id') ‥‥‥‥‥ 「符号なしINT」を使用した自動増分ID(主キー)
char('カラム名', 長さ) ‥‥ CHAR、長さを指定する固定長文字列
date('カラム名') ‥‥‥‥ 日付
time('カラム名') ‥‥‥‥ 時間
dateTime(カラム名) ‥‥ 日付時刻
integer('カラム名') ‥‥‥ 整数
timestamps() ‥‥‥‥‥ created_atとupdate_atカラム
string('カラム名') ‥‥‥‥ VARCHAR(255バイトになる)
string('カラム名', 長さ) ‥‥長さ指定のVARCHAR
text('カラム名') ‥‥‥‥ ‥ TEXT(長文)
nullable() を加えるとNullの登録を許容してくれる。
例:string('カラム名') ー>nullable()
after('カラム名') は指定したカラムの次に追加してくれる。
このページが一番、分かり易い。
https://qiita.com/Otake_M/items/3c761e1a5e65b04c6c0e
ここに書かれている中で、使用頻度の高そうなものを転記します。
increments('id') ‥‥‥‥‥ 「符号なしINT」を使用した自動増分ID(主キー)
char('カラム名', 長さ) ‥‥ CHAR、長さを指定する固定長文字列
date('カラム名') ‥‥‥‥ 日付
time('カラム名') ‥‥‥‥ 時間
dateTime(カラム名) ‥‥ 日付時刻
integer('カラム名') ‥‥‥ 整数
timestamps() ‥‥‥‥‥ created_atとupdate_atカラム
string('カラム名') ‥‥‥‥ VARCHAR(255バイトになる)
string('カラム名', 長さ) ‥‥長さ指定のVARCHAR
text('カラム名') ‥‥‥‥ ‥ TEXT(長文)
nullable() を加えるとNullの登録を許容してくれる。
例:string('カラム名') ー>nullable()
after('カラム名') は指定したカラムの次に追加してくれる。
2024年04月29日
docker上でphpmyadminを使う。
dockerコンテナ上でmysqlのデータベースを操作していて、
テーブル構造を確認したくなったが、phpmyadminの起動方法が分からない。
Webで検索して分かった。
docker-compose.yml 内に以下の記述があった。
"phpmyadmin-dl": {
"image": "phpmyadmin/phpmyadmin",
"container_name": "phpmyadmin-dl",
"PMA_ARBITRARY=1",
"PMA_HOST=db-dl",
"PMA_USER=root",
"PMA_PASSWORD=root"
],
"links": [
"db-dl"
],
"ports": [
"8580:80"
],
"volumes": [
"/sessions"
]
},
localhost:8580/
で起動した。
テーブル構造を確認したくなったが、phpmyadminの起動方法が分からない。
Webで検索して分かった。
docker-compose.yml 内に以下の記述があった。
"phpmyadmin-dl": {
"image": "phpmyadmin/phpmyadmin",
"container_name": "phpmyadmin-dl",
"PMA_ARBITRARY=1",
"PMA_HOST=db-dl",
"PMA_USER=root",
"PMA_PASSWORD=root"
],
"links": [
"db-dl"
],
"ports": [
"8580:80"
],
"volumes": [
"/sessions"
]
},
localhost:8580/
で起動した。
2024年04月09日
Laravel: migrateで [1045] Access denied for user
php artisan migrate
migrateすると以下のエラーメッセージが表示された。
SQLSTATE[HY000] [1045] Access denied for user 'dbuser'@'172.18.0.2' (using password: YES)
(SQL: select * from information_schema.tables where table_schema = message-board and table_name =
migrations and table_type = 'BASE TABLE')
grant コマンドで権限を付与していないことに気付いたので、次のコマンドを実行した。
GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost' IDENTIFIED BY 'dbpass' WITH GRANT OPTION;
手順書には「このコマンドにより、dbuserという名前のユーザをMySQLに追加するとともに、MySQLの管理者権限(何でも実行できる権限)を付与します。」と書かれていたのだがエラーメッセージが表示されて実行っできない。
そこで、ユーザ作成と権限の付与をやり直した。
まず、ユーザを削除。
drop user 'dbuser'@'localhost';
次にユーザを作成。
create user 'dbuser'@'%' identified by 'password'; --全hostからのアクセスを許可
または
create user 'dbuser'@'localhost' identified by 'test'; --localhostからのアクセスを許可
最後に権限を付与
GRANT ALL ON *.* TO 'dbuser'@'localhost'; --全DBに対するすべての権限を付与
または
GRANT ALL ON testDB.* TO 'test'@'localhost'; --testDBに対するすべての権限を付与
migrate を実行できた。
2024年04月08日
Docker : Laravel環境でMysqlに接続
php artisan migrate
migrateすると以下のエラーメッセージが表示された。
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where
table_schema = message-board and table_name = migrations and table_type = 'BASE TABLE')
.env ファイルを修正した。
修正前 DB_HOST=127.0.0.1
修正後 DB_HOST=db-dl
db-dl は docker-compose.yml 内に記載されているコンテナ名(データベースコンテナ)
これで、Connection refusedエラーは解消できた。
2024年04月02日
?とutf8mb4
?責、?咤激励、?る
機種依存文字の中で ? はよく使われる。
この文字は、文字コードがutf8のmysqlのデータベースに登録できない。
文字コードをut8mb4にするとmysqlに登録できる。
データベースに保存されているデータを取り出して画面表示すると、
?が文字化けした。データベースにはちゃんと保存されているのに
何で文字化けするのか分からなかったが、以下のコマンドが紛れ込んでいた。
set names utf8;
これを取り除くか、または utu8 を utf8mb4 に変更すると正しく表示された。
set names utf8mb4;
機種依存文字の中で ? はよく使われる。
この文字は、文字コードがutf8のmysqlのデータベースに登録できない。
文字コードをut8mb4にするとmysqlに登録できる。
データベースに保存されているデータを取り出して画面表示すると、
?が文字化けした。データベースにはちゃんと保存されているのに
何で文字化けするのか分からなかったが、以下のコマンドが紛れ込んでいた。
set names utf8;
これを取り除くか、または utu8 を utf8mb4 に変更すると正しく表示された。
set names utf8mb4;